2012-04-05 44 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編碼。