Я пытаюсь получить веб-страницу, которая представляет собой смесь английского и корейского языков. Браузер может просто получать и отображать страницу, но когда я пытаюсь получить ее программным способом, я не могу заставить корейские символы отображаться правильно.
Я знаю, что вы можете указать кодировку в StreamReader, но я еще не нашел ту, которая работает.
Это код, который я использую, чтобы прочитать ответ:
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(response.CharacterSet));
response.CharacterSet возвращает UTF8. Я также попробовал все основные параметры кодирования - ASCII, BigEndian, Default, Unicode, UTF32, UTF7 и добавление Encoding.UTF8 вручную.
Я также пытался пройти через CultureInfo:
CultureInfo kr = CultureInfo.GetCultureInfo("ko");
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(kr.TextInfo.ANSICodePage));
с использованием "ko" и "ko-KR". Я получаю разные результаты от всех этих разных типов, но ни один из них не является правильным.
Я также пробовал кодовую страницу напрямую:
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(949));
response.ContentEncoding
возвращает пустую строку. У меня заканчиваются идеи.
Редактировать: Вот пример того, что я ожидаю:
프로젝트:
и вот что я получаю:
//ASCII == ??????
//BigEndian == ़汩湫â¨ç‰¥æ˜½âˆ¯æ©³â½¤ç°æ”
//Default == Ãâ€â€žÃ«Â¡Å“ì Âʸ:
//Unicode == Ãâ€â€žÃ«Â¡Å“ì Âʸ
//UTF32 == ���������ï
//UTF7 == Ô„ë¡œì Âʸ
//UTF8 == 프로ì 트