У меня есть следующий 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. Есть ли лучший способ читать файлы, содержащие умляуты?(Разные кодировки?)