2013-07-11 56 views
1

我正在學習如何使用XMLRCurl軟件包掃描網頁。除了一件事情以外,一切順利。像ö或č這樣的特殊字符會以不同的方式讀入R.例如,將í讀入爲ƒ。我認爲後者是第一種HTML編碼。如何轉換Web中的特殊符號刮與R?

我一直在尋找一種方法來轉換這些字符,但我還沒有找到它。我相信其他人也會遇到這個問題,我懷疑必須有某種功能來轉換這些角色。有誰知道解決方案?提前致謝。

這是一個代碼的例子,對不起,我沒有提供它。

library(XML) 
url <- 'http://en.wikipedia.org/wiki/2000_Wimbledon_Championships_%E2%80%93_Men%27s_Singles' 
tables <- readHTMLTable(url) 
Sec <- tables[[6]] 
pl1R1 <- unlist(strsplit(as.character(Sec[,2]), ' '))[seq(2,32, 4)] 
enc2utf8(pl1R1) # does not seem to work 
+3

這是一個enconding問題,你可能想將文件轉換爲UTF-8。看看'iconv'函數,在許多XML函數中還有'enconding'參數 – dickoa

+0

謝謝,這看起來像是正確的方向!我查看了函數,但是我需要在'from'參數中指定原始編碼。我也研究了'htmlParse'函數。你可以在那裏指定編碼,但是當它存在於html文件中時它會自動選擇編碼。顯然,編碼不存在於html文件中,否則該函數會撿起它。我需要手動指定編碼,但我如何知道編碼? – Edwin

+0

我使用Linux,我知道我的區域設置是UTF-8,所以每次我有一個文件時,我都使用'enconding = UTF-8'。關於iconv是真的,有時很難知道from,但是有'enc2native'和'enc2utf8',他們不需要知道文件的編碼。希望它有幫助,但是用你的代碼+你想要解析的url,我相信我們可以有更精確的答案 – dickoa

回答

0

嘗試首先解析它,同時指定編碼,然後讀取表格,如下所示:readHTMLTable and UTF-8 encoding

一個例子可能是:

library(XML) 
url <- "http://en.wikipedia.org/wiki/2000_Wimbledon_Championships_%E2%80%93_Men%27s_Singles" 
doc <- htmlParse(url, encoding = "UTF-8") #this will preserve characters 
tables <- as.data.frame(readHTMLTable(doc, stringsAsFactors = FALSE)) 
Sec <- tables[[6]] 
#not sure what you're trying to do here though 
pl1R1 <- unlist(strsplit(as.character(Sec[,2]), ' '))[seq(2,32, 4)]