在R中解析XML时的编码问题

时间:2016-07-27 12:12:02

标签: r xml parsing encoding

我在解析包含非拉丁字符数据的xml时遇到问题。例如,我试图解析以下xml:

<PersonFullName>
  <PersonCode>
    9999999999999
  </PersonCode>
  <FirstName>
    ANDŽĀRS
  </FirstName>
  <LastName>
    DŽANDĒRĒKĀ
  </LastName>
</PersonFullName>

当我使用以下代码

library(XML)
input <- xmlTreeParse(file = "test.xml", encoding = "UTF-8")
print(input)

我得到以下结果

<?xml version="1.0" encoding="UTF-8"?>
<PersonFullNameVSAA>
  <PersonCode>9999999999999
                </PersonCode>
  <FirstName>ANDŽĀRS
                </FirstName>
  <LastName>DŽANDĒRĒKĀ
                </LastName>
</PersonFullNameVSAA>

xml以UTF-8正确编码。我不知道还能做些什么才能让角色格式正确。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,评论中的所有方法均无效。

我在Windows机器上的编码是Windows-1252,可以通过确定

Sys.getlocale("LC_CTYPE")

似乎XML包正确解析了UTF-8,但是返回了具有本地编码的字符串,然后R可能会以错误的方式解释字符串。

我将输出收集在包含字符向量的数据框中。对我来说,解决方案是使用iconv转换结果数据帧:

apply(mydf, 2, function(x) iconv(x, from = "UTF-8", to = "Windows-1252"))