GET ответ сохраняю в тхт файл, не правильна кодировка - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет! сделал несколько GET запросов, получил куки с авторизацией. Далее отправляю GET запрос, текст ответа сохраняю в тхт файл и там получется html текст страницы в "другой" кодировке, как изменить? запрос
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://ufa.allpn.ru/user/add/russia/?cat=apartment");
            request.CookieContainer = cc;
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0";
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            request.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
            request.Headers.Add("Accept-Encoding", "gzip, deflate");
            HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
            Stream stream = resp.GetResponseStream();
            StreamReader sr = new StreamReader(stream);
 
            StreamWriter writer = new StreamWriter("D:\\allpn.txt", false);
            writer.WriteLine(sr.ReadToEnd());
            writer.Close();
            resp.Close();
ответ сохраненный в тхт файл
� ͽmw�F�(�Y9'���{f$ߑ��&�R��8���&N�����@$$!" J����߸_��{�~Qg�Ulٲg&��{fQ���$�<�FOU� ��(y�s&����������+�x���n���kK/�te�e ��ĊY������z�/�lY���UaC$��Z��M1�&���I~�����ɕ�fu.O�B$b�VfJ���o٭��B�:m�1}Gݗ�-���D���N����P���j^�*"Ǘ�,,rb�]� �L���r���Dt��_�"E��N����[E��Ʋb�� ��b(���j�5�:B�*����ȧ����\,� ��%��@E��A�O� F/Z�џ�<�)r�g-Zb˵��y�(r�S��Ժƭ�U�\��[��X��B��m�R��`Ug�^�/��>�VHQ$ׯ��'�<DZiW������ܜ�"��K�嗦"(���Wo\�~�U���UEVxw�����g�z ����R�6H��T���|����5Q��!—�E.��X�&� �C�ψk\�tYf'�C�B=KӳXs��r8W�v��:'�_V��@�������_b��^������ d�LG���V#�-@�Y�F�/뀛 Xa���w`z"�2�k�[�R�H��)�`O�̘0����ܸ���*ŀf\�Rd��a~&±p�ɯ���J���|a��q��ZCƀq�kP�1T�w� ��ѻ��U�+c��?���r�U� �#�e��#��D�v��5{��@��p��M�-�y1��ĭР���!d���ȯ��;|m"�+�B$R[aº�j���ܨ+O����='䞬��� ��J��<�-�?���SG������Q-m�B��CM�Z-ι"���jx�[1��Z:��O��{��� )���X�@q�N���Z��](�e��1nV�9!��A�cdcL��:�َ�5��9~��M�����4d�T�8��"�5]���LGjUV�0�BD�U�y%ψ�L�DX��K� �������m�'��rey���Q�C�{��o)M�|!��T��ԹY�C�O�2�Yح�F�* �J����d&�D��lр�r}A�g�/zG-z��3�ꀚ? 뤥<C�6�}�#���^���h�F��~ ?��r�� �Z�'��<_���C�Z�?;&s��m0��8n����>3]���>�D]9�. jڈѥ�1�4�\��� 1��W��:,��b'��a��"#�|����ɝ�D�uI�)ڀt���"gB@���j�#�<ۧ_Υy��*_,����7\�Ώ>(���i��ԤDX�m ���~6{�w ��t~��ɔ=9������%(�= �9�փ���뛧�2%ԐQ���x�����T|��:5]�|�� y�)�=E����`<�����^3s���w��,�� �����0<N�w� �K�]��w ୩ �;5ְa���i�m�>��m��j�V�&j�t\�m�S��si�Ȕ>+m����5պ'�͏烀��BP��6��5���m��z�C��"�4��C�Vd��,ɳ`�rf�b(���`N��7��
Мне нужно получить хтмл код страницы, в которой капча(не картинка) текстом(простое уравнение 2+3). Хочу найти в тексте эту капчу и отправить её со следующит POST запросом. Надеюсь мой способ правильный или это стандартная ошибка новичка?
это пробовал и всеравно каракули
            HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
            Stream stream = resp.GetResponseStream();
            StreamReader sr = new StreamReader(stream, Encoding.GetEncoding("windows-1251"));
 
            StreamWriter writer = new StreamWriter("D:\\allpn.txt", false, Encoding.GetEncoding("windows-1251"));
            writer.WriteLine(sr.ReadToEnd());
            writer.Close();
            resp.Close();
            HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
            Stream stream = resp.GetResponseStream();
            StreamReader sr = new StreamReader(stream, System.Text.Encoding.UTF8);
 
            StreamWriter writer = new StreamWriter("D:\\allpn.txt", false, System.Text.Encoding.UTF8);
            writer.WriteLine(sr.ReadToEnd());
            writer.Close();
            resp.Close();
Вроде разобрался, помогло это при запросе
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
Хотя ещё не до конца, русские буковки не видит, вопросиками всё
<tbody class="add_comm_and_apartment" > <tr><td id="f2">?????????? ?? ?????: <div id="advice">??????? ????? ??? ??????</div></td><td id="f3"> <input type="text" name="from_metro" size="25" value=""> &nbsp;&nbsp; <select name="from_metro2"> <option value="">--- ?? ?????</option> <option value="????? ??????">????? ??????</option> <option value="????? ???????????">????? ???????????</option> <option value="??????">??????</option> </select> </td></tr>
Всё! окончательно разобрался! Всем спасибо что посмотрели на ход моих мыслей =)
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://ufa.allpn.ru/user/add/russia/?cat=apartment");
            request.CookieContainer = cc;
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0";
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            request.Headers.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
            request.Headers.Add("Accept-Encoding", "gzip, deflate");
            request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
            StreamReader sr = new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding(1251));
            StreamWriter writer = new StreamWriter("D:\\allpn.txt", false, Encoding.GetEncoding(1251));
            writer.WriteLine(sr.ReadToEnd());
            writer.Close();
            resp.Close();

Решение задачи: «GET ответ сохраняю в тхт файл, не правильна кодировка»

textual
Листинг программы
Encoding srcencoding = Encoding.UTF8;
 
                string charSet = httpWebResponse.ContentEncoding;
                if (!string.IsNullOrEmpty(charSet))
                {
                    srcencoding = Encoding.GetEncoding(charSet);
                }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5
Похожие ответы