让htmlParse与希伯来语一起工作?

时间:2012-01-30 09:16:10

标签: xml r rcurl

我希望能够让htmlParse与希伯来语很好地协作,但它仍然会在我输入的页面中拼写希伯来语文本。

例如:

# why can't I parse the Hebrew correctly?
library(RCurl)
library(XML)
u = "http://humus101.com/?p=2737"
a = getURL(u) 
a # Here - the hebrew is fine.
a2 <- htmlParse(a)
a2 # Here it is a mess...

这些似乎都没有解决它:

htmlParse(a, encoding = "utf-8")
htmlParse(a, encoding = "iso8859-8")

这是我的语言环境:

> Sys.getlocale()
[1] "LC_COLLATE=Hebrew_Israel.1255;LC_CTYPE=Hebrew_Israel.1255;LC_MONETARY=Hebrew_Israel.1255;LC_NUMERIC=C;LC_TIME=Hebrew_Israel.1255"
> 

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在对UTF-8getURL的调用中指定htmlParse代码。

a <- getURL(u, .encoding = "UTF-8")
htmlParse(a, encoding = "UTF-8")

这些区域设置问题始终是一个痛苦到底。当我输入cat(a)时(在UTF-8中指定getURL编码后),我看到he.wrodpress.org页面声称是UTF-8:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />,但希伯来语位是UTF-16。也就是说,它们看起来像<U+05D3><U+05E6><U+05DE><U+05D1><U+05E8>。因此,这可能是由该网页的混合编码引起的问题。

比较几种编码,唯一不会在我的机器上产生乱码的编码是UTF-8。

(trees <- lapply(c("UTF-8", "UTF-16", "latin1"), function(enc)
{
  a <- getURL(u, .opts = proxy_opts, .encoding = enc)
  htmlParse(a, encoding = enc)
}))

如果它变得绝望,请在上面的代码中将iconvlist()传递给lapply,看看是否有任何可能的结果适合你。