【问题标题】:Encoding issue when parsing XML in R在 R 中解析 XML 时出现编码问题
【发布时间】:2016-07-27 12:12:02
【问题描述】:

我在解析包含非拉丁字符数据的 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 正确编码。我不知道我还能做些什么来获得正确格式的字符。

【问题讨论】:

  • 调用xmlTreeParse()函数时不指定编码会怎样?喜欢:xmlTreeParse(file = "test.xml")?
  • 同样的事情发生
  • 运行 Sys.getlocale('LC_CTYPE') 以查看您的本地编码是什么。如果不是UTF-8,请确保将其设置为UTF-8。如果您已经设置了UTF-8,那么您可能需要将xml文件作为文本导入并使用stringi::stri_conv()将文本从任何编码转换为UTF-8
  • 感谢@Abdou,但没有任何建议有帮助:/

标签: r xml parsing encoding


【解决方案1】:

我遇到了同样的问题,并且 cmets 中的任何方法都不起作用。

我在 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"))

【讨论】:

    猜你喜欢
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    相关资源
    最近更新 更多