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 № 1FWIW: 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