在R:UTF-8和Umlaut中读取XML文件
我想导入一些包含一些德语文本的xml文件,包括umlauts(如ä,ö,ü,&,“)。 但不知何故,我不能得到一个适当的进口。 我正在使用RStudio和XML包,下面是我要做的: 示例XML文件(从维基百科编辑的示例):在R:UTF-8和Umlaut中读取XML文件,xml,r,utf-8,import,Xml,R,Utf 8,Import,我想导入一些包含一些德语文本的xml文件,包括umlauts(如ä,ö,ü,&,“)。 但不知何故,我不能得到一个适当的进口。 我正在使用RStudio和XML包,下面是我要做的: 示例XML文件(从维基百科编辑的示例): 维基百科Städteverzeichis 根夫 这一代人是西兹·冯äüö&;。。。 XML文件的导入 doc <- xmlParse('data/example.xml', useInternalNodes=TRUE) doc 维基百科StÃd Everze
维基百科Städteverzeichis
根夫
这一代人是西兹·冯äüö&;。。。
XML文件的导入
doc <- xmlParse('data/example.xml', useInternalNodes=TRUE)
doc
维基百科StÃd Everzeichis
根夫
这是一个很好的例子;。。。
很明显,UMLAUT没有正确导入,我该如何修复它?看起来windows默认情况下可能不会使用UTF-8。这里有各种各样的解决方案,可以将其写入二进制文件 但是,您是否尝试过设置系统区域设置
Sys.setlocale(category="LC_ALL", locale="en_US.UTF-8")
我通过将区域设置为类似“fi_fi.ISO8859-1”的ISO8859-1区域设置来“打破”它
编辑
我安装了Windows版本的R 3.1.2来复制它,果然,它与您发布的相同。我尝试了以下操作,尽管R控制台上的输出看起来不正确,但文件的输出是正确的
> Sys.setlocale(category="LC_ALL", locale="German")
> [1] "LC_COLLATE=German_Germany.1252;LC_CTYPE=German_Germany.1252;LC_MONETARY=German_Germany.1252;LC_NUMERIC=C;LC_TIME=German_Germany.1252"
> doc <- xmlParse("c:/Users/Mark/german.xml")
> saveXML(doc, "c:/Users/Mark/german-2.xml")
Sys.setlocale(category=“LC_ALL”,locale=“德语”)
>[1]“LC_COLLATE=德语_德语1252;LC_CTYPE=German_German.1252;LC_MONETARY=German_German.1252;LC_NUMERIC=C;LC_TIME=德语_德语.1252“
>doc saveXML(doc,“c:/Users/Mark/derman-2.xml”)
该文件编写为:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<verzeichnis><titel>Wikipedia Städteverzeichnis</titel><eintrag><stichwort>Genf</stichwort><eintragstext>Genf ist der Sitz von ä ü ö &...</eintragstext></eintrag></verzeichnis>"
维基百科的Städteverzeichnisgenf是一本关于vonäüö&;的书。”
因此,它似乎写得正确。从今天起,这就是对我有效的解决方案:
linkToXmlFile <- "<yourPath>"
library(XML)
data <- xmlParse(linkToXmlFile, encoding="UTF-8")
xmlDataFrame <- xmlToDataFrame(data)
linkToXmlFile您使用的是哪个版本的R?我在我的Mac电脑上使用3.0.2,这很好,我使用RStudio和R3.1.2(64位Windows)更新了我的答案。您应该能够将区域设置为windows默认设置为非UTF8不起作用,警告消息:在Sys.setlocale(category=“LC_ALL”,locale=“en_US.UTF-8”):无法执行将区域设置为“en_US.UTF-8”的OS报告请求,与“de_de.UTF-8”相同,Sys.getlocale()给出:“LC_COLLATE=德语_德语1252;LC_CTYPE=German_German.1252;LC_MONETARY=German_German.1252;LC_NUMERIC=C;LC_TIME=German_German.1252”,编辑:实际上看起来German_German.1252和de_de.UTF-8是一样的:我的答案有另一个更新。已安装windows版本,并将系统区域设置设置为“德语”“,它正确地写入了文件嗯,这很奇怪,我可以复制这个,虽然它看起来写得正确,但我仍然无法在rstudio中正确地处理xml文件,例如,ö被识别为“Ô,并计为2个字符。。。当我真的需要r来识别它为“ö”和1个字符时。(“è”==“ö”会给我假)我找到了一个工作,我拿了我需要的绳子,很高兴我能帮上忙。很多年前,由于编码问题,我将所有的开发人员都从windows中移出!
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<verzeichnis><titel>Wikipedia Städteverzeichnis</titel><eintrag><stichwort>Genf</stichwort><eintragstext>Genf ist der Sitz von ä ü ö &...</eintragstext></eintrag></verzeichnis>"
linkToXmlFile <- "<yourPath>"
library(XML)
data <- xmlParse(linkToXmlFile, encoding="UTF-8")
xmlDataFrame <- xmlToDataFrame(data)