0

当我尝试解析包含特定日文汉字的 xml 文件时出现“parse_error”:

退

如果我将此汉字更改为另一个汉字,则解析效果很好。

任何想法?

PS:我用 rapidXML 解析文件

这是 xml 文件的示例:

<?xml version="1.0" encoding="UTF-8"?>
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Exam.xsd">
    <Patient>
     <ESUID>CRodrigueTest-20120423-104410</ESUID>
     <Lastname>退</Lastname>
    </Patient>
</Root>
4

1 回答 1

0

这里实际上问题不在于rapidXML 库。问题可能出在 basic_ifstream.basic_ifstream 上,默认情况下仅以 ansi 模式打开文件。所以我们必须将其设置为 utf-8。使用下面的代码片段:

    basic_ifstream<wchar_t> fFileStream(fullxmlfilepath, ios::binary);

    std::locale loc(std::locale::classic(), new std::codecvt_utf8<wchar_t>);
    fFileStream.imbue(loc);  

    xmlFile = new rapidxml::file<wchar_t>(fFileStream);
    doc.parse<parse_declaration_node>(xmlFile ->data());
于 2016-08-19T08:32:18.617 回答