/ / Czytanie strony internetowej w języku obcym za pomocą StreamReadera - c #, http, kodowanie, czytnik strumieniowy

Czytanie strony internetowej w obcym języku za pomocą StreamReadera - c #, http, kodowanie, streamreader

Próbuję pobrać stronę internetową, która jest mieszankąAngielski i koreański. Przeglądarka może dobrze pobierać i wyświetlać stronę, ale kiedy próbuję pobrać ją programowo, nie mogę poprawnie wyświetlać znaków koreańskich.

Wiem, że możesz określić kodowanie w StreamReaderze, ale nie znalazłem jeszcze takiego, który działa.

Oto kod, którego używam do odczytania odpowiedzi:

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(response.CharacterSet));

response.CharacterSet zwraca UTF8. Próbowałem też wszystkich podstawowych opcji kodowania - ASCII, BigEndian, Default, Unicode, UTF32, UTF7 i ręcznie dodałem Encoding.UTF8.

Próbowałem też o tym porozmawiać przez CultureInfo:

CultureInfo kr = CultureInfo.GetCultureInfo("ko");
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(kr.TextInfo.ANSICodePage));

używając zarówno „ko”, jak i „ko-KR”. Otrzymuję różne wyniki od wszystkich tych różnych typów, ale żaden z nich nie jest poprawny.

Próbowałem też bezpośrednio strony kodowej:

StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(949));

response.ContentEncoding zwraca pusty ciąg. Skończyły mi się pomysły.

Edycja: Oto przykład tego, czego oczekuję:

프로젝트:

a oto co otrzymuję:

        //ASCII == ??????
//BigEndian == ़汩湫â¨ç‰¥æ˜½âˆ¯æ©³â½¤ç°æ”
//Default == íâ€â€žÃ«Â¡Å“ì Â트:
//Unicode == íâ€â€žÃ«Â¡Å“ì Â트
//UTF32 == ���������ï
//UTF7 == 프로ì Â트
//UTF8 == 프로ì 트

Odpowiedzi:

1 dla odpowiedzi № 1

FWIW: czytnik strumienia prawdopodobnie nie będzie działał dobrze.

Wolę używać Klasa HttpWebRequest do robienia żądań przeglądarki (w przeciwnym razie zaczniesz bardzo żałować, gdy otrzymasz 302 odpowiedzi lub kodowanie gzip i / lub fragmentowanie)

Awansowałem to jako odpowiedź moc bardzo dobrze być problemem, który już masz. Nie wiem co odpowiedź, którą otrzymujesz, wygląda oczywiście