Заставить htmlParse работать с ивритом? - PullRequest
2 голосов
/ 30 января 2012

Я бы хотел, чтобы 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 Ответ

1 голос
/ 30 января 2012

Укажите UTF-8 endoding в вызове getURL и 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() для подтверждения в приведенном выше коде и посмотрите, работает ли какое-либо из возможных условий для вас.

...