Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R:UTF-8和Umlaut中读取XML文件_Xml_R_Utf 8_Import - Fatal编程技术网

在R:UTF-8和Umlaut中读取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

我想导入一些包含一些德语文本的xml文件,包括umlauts(如ä,ö,ü,&,“)。 但不知何故,我不能得到一个适当的进口。 我正在使用RStudio和XML包,下面是我要做的: 示例XML文件(从维基百科编辑的示例):


维基百科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 ä ü ö &amp;...</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 ä ü ö &amp;...</eintragstext></eintrag></verzeichnis>"
linkToXmlFile <- "<yourPath>"

library(XML)

data <- xmlParse(linkToXmlFile, encoding="UTF-8")
xmlDataFrame <- xmlToDataFrame(data)