2010-12-06 21 views
4

我想知道如何設置編碼參數,這樣當我下載文本時,它看起來就像我在頁面源中看到的一樣在Web瀏覽器,如:如何使用R中正確的(中文)編碼下載網頁文本

readLines("http://www.baidu.com/s?wd=r+project")[132] 
[1] "<div id=\"foot\">&copy;2010 Baidu <span>´ËÄÚÈÝϵ°Ù¶È¸ù¾ÝÄúµÄÖ¸Áî×Ô¶¯ËÑË÷µÄ½á¹û£¬²»´ú±í°Ù¶ÈÔ޳ɱ»ËÑË÷ÍøÕ¾µÄÄÚÈÝ»òÁ¢³¡</span></div>" 

當應顯示爲:

> <div id="foot">&copy;2010 Baidu <span>此內容系百度根據您的指令自動搜索的結果,不代表百度贊成被搜索網站的內容或立場</span></div> 

任何幫助,將不勝感激!

# windows 7 
sessionInfo() 
R version 2.12.0 (2010-10-15) 
Platform: x86_64-pc-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=English_United Kingdom.1252 
[2] LC_CTYPE=English_United Kingdom.1252 
[3] LC_MONETARY=English_United Kingdom.1252 
[4] LC_NUMERIC=C       
[5] LC_TIME=English_United Kingdom.1252  

attached base packages: 
[1] stats  graphics grDevices datasets utils  methods base  

other attached packages: 
[1] XML_3.2-0.1 RCurl_1.4-4.1 bitops_1.0-4.1 rcom_2.2-3.1 rscproxy_1.3-1 

loaded via a namespace (and not attached): 
[1] tools_2.12.0 
+2

+1的工作示例。 – 2010-12-06 17:09:52

+2

這個網頁上面說的是維基百科所說的「GB2312是人民網關鍵官方字符集的註冊互聯網名稱」中華民國,用於簡體中文字符「 – 2010-12-06 17:10:25

回答

3
con = url("http://www.baidu.com/s?wd=r+project", encoding = "gb2312") 
readLines(con)[132] 
[1] "<div id=\"foot\">&copy;2010 Baidu <span>此內容系百度根據您的指令自動搜索的結果,不代表百度贊成被搜索網站的內容或立場</span></div>" 
3

的網頁說,在頂部

<meta http-equiv="content-type" content="text/html;charset=gb2312"> 

其中維基百科說是

GB2312是註冊的Internet名稱 的重要官員字符集 中國人民共和國,簡體中文使用

這似乎是合適的(但仍可能是一個錯誤)。

要了解你的平臺上支持的編碼:

iconvlist() 

地雷,這包括 「GB2312」。讓我們用iconv轉換它:

> a <- readLines("http://www.baidu.com/s?wd=r+project")[132] 
> iconv(a, from="gb2312") 
[1] "<div id=\"foot\">&copy;2010 Baidu <span>此內容系百度根據您的指令自動搜索的結果,不代表百度贊成被搜索網站的內容或立場</span></div>" 

這裏有一個很好的措施截圖:
alt text

從長遠來看,你需要找到並下載得到使用的編碼參數,從每個網頁此編碼正確。

+0

謝謝,這也是有用的,因爲有關元標記的信息。 – JoshuaCrove 2010-12-06 17:27:58

+0

雖然我確實有「gb2312」編碼可用,但是當我在您的解決方案中嘗試使用iconv(a,from =「gb2312」)時,我只出去> iconv(a,from =「gb2312」) [1] NA – JoshuaCrove 2010-12-06 17:34:39

0

'encoding'是HTML中使用的'charset'。

在您鏈接到的頁面中,指定了字符集「charset = gb2312」。

指定編碼= gb2312會使源恢復正確。

但是,R可能不會以這種方式顯示它。您在R中不顯示HTML,只是獲取網頁的源代碼。你需要一個網頁瀏覽器來顯示HTML。

相關問題