2012-04-05 112 views
2

这可能是与其他韩国编码的问题不同。C# - 韩国编码

有这个网站,我要刮,它是韩国人。

在他们的网站的一个例子句话是这样 “为了保护您的隐私,请使用返回按钮在搜索结果屏幕,而不是后退按钮的顶部和底部。”

我使用HttpWebRequest和HttpWebResponse刮网站。

这是我retreive的HTML

- 部分代码 -

using (Stream data = resp.GetResponseStream()) 
{ 
    response.Append(new StreamReader(data, Encoding.GetEncoding(code), true).ReadToEnd()); 
} 

我现在的问题是,我没有得到正确的韩语字符。在我的“代码”变量,我在这里在MSDN http://msdn.microsoft.com/en-us/library/system.text.encoding.aspx基础的代码页(让我缩小它)。

这里是韩国的代码页: 51949,50225,20949,20833,10003,949

,但我仍然没有得到正确的韩语字符?什么问题?

+0

什么编码的页面中?它是否有任何元标签?那么http头文件呢? – Oded 2012-04-05 15:49:01

+0

它只是头部EUC-KR,但我已经使用这个名字Encoding.GetEncoding(“EUC-KR”),并仍然得到了错误的韩语字符。 ?逾?逾?冤蒂森ℓ?蹂????房子? ?ㅼ冤? ⑸??你怎么看? ????ㅻ?媛湲?逾????冤?冤gyelnaek?硫???④的Nack ??⑥?房屋逾?Soep?Ъ⑺?湲?谀???? – 2012-04-05 15:53:36

+0

是否安装在执行该刮的计算机上的代码页? – Oded 2012-04-05 15:54:18

回答

3

这是非常有可能的是,页面是不是在一个特定的编码韩国,但Unicode编码之一。

尝试Encoding.UTF8Encoding.Default(UTF-16),而不是特定的代码页。也有Encoding.UTF7Encoding.UTF32,但他们并不常见。

要确定,检查meta标签和标题由服务器返回的内容类型。


更新(从commments收集):

由于内容类型标题为EUC-KR,相应的代码页是51949,这是你需要使用检索页的内容。

目前尚不清楚的是你出来写这一个文件 - 你需要编写出文件时使用相同编码,或(使用Encoding.Convert)从原来的转换byte[]到输出文件编码。

+0

这是内容类型报头“内容类型:文本/ HTML;字符集= EUC-KR” – 2012-04-05 15:54:56

+0

@JaysonRagasa - 这似乎是代码页51949. – Oded 2012-04-05 15:56:25

+0

当我使用的默认。我得到这个“果酱chaetjjya chekjjeol cheopjjya chekjjeol cheopjjae chaenjjang ?? jjyanjjang稻草?Jjan????持铁jjeoljing jjeol?Jjeok?我??了?Jjeoljjaep她??果酱?卡纸?Jjaejjael ???稻草jjyanjjang jjyanjjang?增稠jjangjjak???织造戳?jjat?jjaejing jjaekchang jjyacheol?chaetjjeok果酱我?我?jjyangcheol jjaechat jjaecheot?jjat jjangchaep cheojjaemÂ?jjaecheot果酱?? ??? ??? jjyacheol体?我?Âjjyangchael jjeok jjeolchaet ?? ?jjaekchang jjya?jjat cheopjjaem?果酱?“ --------- UTF图8是这种 “占ssokyep ssokyep占占占ssokyep ssokyep ssokyep占占占ssokyep ssokyep占”。“-------- UTF7是一样的默认--- ---- UTF32并没有在所有的工作-----统一坠毁我的N ++ ----- – 2012-04-05 16:03:03

0

虽然有我和下面的代码完成了它完全一样的问题:

Encoding.UTF8.GetString(DownloadData(URL)); 

这直接变换输出WebClient的GET请求UTF8编码。