我正在R中进行一些文本挖掘。我要分析的文本是德语。
问题在于德语字符在文本本身或结果中均无法正确显示。
我正在Mac OS上工作。
我在这里找到了类似的主题,并尝试了建议的解决方案:
Sys.setlocale("LC_ALL", "de_DE.UTF-8")
似乎更改了语言(即未显示错误消息),但字符仍然显示不正确, 例如 Erste-Hilfe-Ma \ xa7nahmen ,而不是Erste-Hilfe-Maßnahmen。
text <- readLines("Erste Hilfe.txt", encoding="de_DE.UTF-8")
结果: Erste-Hilfe-Ma \ xa7nahmen
text <- readLines("Erste Hilfe.txt", encoding="ISO/IEC 8859-15")
结果: Erste-Hilfe-Ma \ xa7nahmen
您还有其他解决方案吗?
答案 0 :(得分:3)
这取决于您对文件的处理方式,但通常stri_read_lines()
包stringi
中的"auto"
可以很好地处理变音符号,即使在library(stringi)
lines <- stri_read_lines("Erste Hilfe.txt", encoding = "auto")
上保留了编码>
lines
如果显示lines_raw <- stri_read_raw("Erste Hilfe.txt")
stri_enc_detect(lines_raw)
矢量,但仍然有问题,则可以尝试检测编码:
Encoding Language Confidence
1 UTF-8 1.00
2 windows-1252 de 0.55
3 Big5 zh 0.44
4 windows-1254 tr 0.25
5 windows-1250 hu 0.14
6 UTF-16BE 0.10
7 UTF-16LE 0.10
8 GB18030 zh 0.10
9 IBM424_rtl he 0.01
输出看起来像这样:
stri_write_lines(lines, "Erste Hilfe_new.txt")
在这种情况下,我读了一个UTF-8文本文件,里面有许多变音符号,并且stringi正确猜测编码没有问题。但是,如果置信度不太高,您可能要尝试一些编码。
我也可以在控制台中毫无问题地显示它(尽管将语言环境设置为en_GB.UTF-8),但是在某些情况下,这可能会引起问题。如果您想通过读取文件来检查编码是否真的被破坏了,或者控制台是否可能无法显示它,则可以尝试将这些行写回到文件中并检查:
"äöü"
您也可以尝试使用变音符号创建一个字符向量,然后看看它是否正确显示:
rvest
通常,0.93版以上的RStudio应该不会有任何问题。希望这会有所帮助。
在评论中,事实证明该文本的源仍可从Internet上获得-我没有考虑过这种可能性。经常会发生编码问题,因为某些编辑器在保存文件时会强制使用某种编码。但是,如果该源在线可用,则可以使用library(rvest)
lines <- read_html("https://www.zeit.de/wissen/2018-10/erste-hilfe-kinder-rotes-kreuz-kurs-ersthelfer-notfall/komplettansicht") %>%
html_nodes(".article__item") %>%
html_text()
> grep("Maßnahmen", lines, value = TRUE)[1]
[1] "In vielen europäischen Ländern, etwa in Belgien und Dänemark, steht Erste Hilfe spätestens in der Sekundarstufe im Schullehrplan. Auch Großbritannien arbeitet an einem Gesetzesentwurf, der vorsieht, dass Grundschulkindern grundlegende Erste-Hilfe-Maßnahmen beigebracht werden. Die Schülerinnen und Schüler weiterführender Schulen sollen in Zukunft die Reanimation üben, also Beatmung und Herzdruckmassage.\n"
包将文本直接读入R:
html_nodes
请参考他们的文档,以了解如何确定pandoc -f html+raw_html -t markdown
的正确输入。我通常使用chrome扩展程序selectorgadget。
答案 1 :(得分:0)
我已经尝试了@JBGruber(stringi)提出的第一个选项,但没有成功。
最终,以下措施的组合提供了帮助:
File
> Reopen with Encoding
更改为UTF-8
我已经尝试了许多解决方法,包括独立完成上述所有步骤,但是只有一个方法可以提供帮助。