读取R:UTF-8和Umlaut中的XML文件

时间:2014-11-19 17:07:57

标签: xml r utf-8 import

我想导入一些带有德语文本的xml文件,包括变音符号(如ä,ö,ü,&,“)。 但不知何故,我无法获得适当的导入。 我使用RStudio和XML包,这是我做的: 示例XML-File(来自维基百科的编辑示例):

<?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>

导入XML文件

doc <- xmlParse('data/example.xml', useInternalNodes=TRUE)

结果

> doc
<?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>

很明显,变音符号输入不正确,如何解决?

2 个答案:

答案 0 :(得分:2)

默认情况下,Windows可能不会使用UTF-8 as mentioned in this article。有各种解决方案可以写入二进制文件。

但是,您是否尝试过设置系统区域设置?

Sys.setlocale(category="LC_ALL", locale="en_US.UTF-8")

我设法通过将语言环境设置为ISO8859-1语言环境来“破解”它,例如“fi_FI.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")

该文件写为:

<?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>"

因此它似乎写得正确。

答案 1 :(得分:0)

到目前为止,这是对我有用的解决方案:

linkToXmlFile <- "<yourPath>"

library(XML)

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

我使用Windows 10,并且XML存储在UTF-8文本文件中。