boost read_xml не правильно читает умлаутс (файл utf8 xml) - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть следующий 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";
        }
    }
}

Strings nachname содержит значения Müller вместо Müller.Я работаю на Windows и использую Visual Studio 2017. Есть ли лучший способ читать файлы, содержащие умляуты?(Разные кодировки?)

...