R Xpath getNodeSet在Windows中不处理utf-8?

时间:2015-11-02 09:56:13

标签: xml r windows xpath utf-8

更新:好的,这似乎是特定于Windows的问题。更具体地说,支持R中其他命令的非拉丁语(在本例中为变音符号)字符的Windows语言环境键盘在Xpath getNodeSet中不支持它们。

因此,以下Windows特定于键盘的区域设置不起作用

> Sys.getlocale()
[1] "LC_COLLATE=Estonian_Estonia.1257;LC_CTYPE=Estonian_Estonia.1257;
    LC_MONETARY=Estonian_Estonia.1257;LC_NUMERIC=C;LC_TIME=Estonian_Estonia.1257"

utf-8键盘中的相同查询在Ubuntu 14.04中起作用。如下:

> Sys.getlocale()
[1] "LC_CTYPE=et_EE.UTF-8;LC_NUMERIC=C;LC_TIME=et_EE.UTF-8;
     LC_COLLATE=et_EE.UTF-8;LC_MONETARY=et_EE.UTF-8;LC_MESSAGES=en_US.UTF-8;
     LC_PAPER=et_EE.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;
     LC_MEASUREMENT=et_EE.UTF-8;LC_IDENTIFICATION=C"

似乎Xpath可能正在处理字符与常见的R命令不同,例如对数据帧进行子集化。我怀疑有一个简单的解决方案,但如果有人能指出问题或提供解决方案,那将是惊人的。

陈述的问题

假设我有一个带有utf-8编码的简单xml文件。

<?xml version="1.0" encoding="UTF-8"?> <doc>
  <!-- A comment -->
  <a xmlns:ns="http://www.omegahat.org">
    <b>utf-8-non
    </b>
    <b>utf-8-hää
    </b>
</a>
</doc>

我用xmlParse读取它:

library(XML) 
doc = xmlParse("konv_korpus/TEI/let_tokenized/new.xml")

当我寻找拉丁字符时:

getNodeSet(doc, "/doc//b[starts-with(.,'utf-8')]")

我得到一份包含“utf-8-hää”的清单。

[[1]]
<b>utf-8-non
    </b> 

[[2]]
<b>utf-8-hää
    </b> 

attr(,"class")
[1] "XMLNodeSet"

但是当我寻找非拉丁字符时:

getNodeSet(doc, "/doc//b[starts-with(.,'utf-8-hää')]")

结果我得到空列表。

list()
attr(,"class")
[1] "XMLNodeSet"

任何人都知道如何解决这个问题?感谢。

0 个答案:

没有答案