使用StreamReader读取外语网页

时间:2011-11-04 16:00:14

标签: c# http encoding streamreader

我正在尝试获取一个英语和韩语混合的网页。浏览器可以很好地获取和显示页面,但是当我尝试以编程方式抓取它时,我无法正确显示韩文字符。

我知道您可以在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 == 프로ì 트

1 个答案:

答案 0 :(得分:1)

FWIW:流阅读器可能无法正常运行。

首选使用HttpWebRequest Class进行浏览器请求(或者当您收到302回复或gzip压缩和/或分块编码时,您会很快感到抱歉)

我将此提升为答案,因为可能很好地解决了您已经遇到的问题。我不知道你的回答是什么当然是