boost read_xml无法正确读取变音符号(utf8 xml文件)

时间:2018-09-11 06:16:36

标签: xml boost encoding utf-8

我有以下XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<Buecherei>
    <Mitarbeiterliste>
        <Mitarbeiter id="42">
            <Vorname>Max</Vorname>
            <Nachname>Müller</Nachname>
        </Mitarbeiter>
        <Mitarbeiter id="44">
            <Vorname>Erika</Vorname>
            <Nachname>Möller</Nachname>
        </Mitarbeiter>
    </Mitarbeiterliste>
</Buecherei>

文件以UTF-8编码存储在文件中。

如果我现在尝试使用Boost属性树来读取它,则变音符号处理不正确。

这是读取文件的程序:

#include <iostream>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>

using namespace boost::property_tree;

int main()
{
    std::cout << "Hello World!\n";
    ptree tree;
    xml_parser::read_xml("D:\\umlauteXML.xml", tree);

    for(auto& val : tree.get_child("Buecherei").get_child("Mitarbeiterliste")) {
        if(val.first == "Mitarbeiter") {
            std::string nachname = val.second.get<std::string>("Nachname","");
            std::cout << val.second.get<std::string>("Vorname", "")<<"\n";
            std::cout << val.second.get<std::string>("Nachname", "") << "\n";
        }
    }
}

字符串nachname包含值Müller而不是Müller。 我正在Windows上使用Visual Studio 2017。 有没有更好的方法来读取包含变音符号的文件? (不同的编码?)

0 个答案:

没有答案