Boost json und UTF8
-
Nachfogend ein JSON File <file.json>, welches UTF8 Zeichen enthält:
{ "description": "\u00FCber den Wolken muss...", }Wie kann ich nachfolgenden Code ändern, dass der JSON Parser von BOOST auch UTF8 liest?
#include "boost/property_tree/json_parser.hpp" void F() { boost::property_tree::ptree pt; boost::property_tree::json_parser::read_json(file.json, pt); boost::optional<std::string> optional = pt.get_optional<std::string>("description"); if (optional) { std::string info = *optional; // more code... } }Danke für eure Hilfe!
Gruß,
T.
-
Was erwartest Du, dass in info steht und was steht tatsächlich drin?
-
Der Umlaut (hier "ü") sollte auch so im std::string stehen.
-
ü (U+00FC) wird ja in UTF-8 als Sequenz aus zwei Bytes, nämlich
0xc3und0xbc, codiert. Falls also0xc3,0xbcin deinemstd::stringstehen, ist es korrekt eingelesen.Jetzt stellt sich die Frage der Darstellung:
Der Visual Studio Debugger z.B. zeigt dir nicht ü, sondern kryptische Zeichen an, eben die Enstprechung von0xc3und0xbcan (als je einen Charakter).Könnte sein, dass alles richtig ist, Du jedoch mit einem anderen Ergebnis gerechnet hast...
Hier noch eine UTF-8 Tabelle: http://www.utf8-chartable.de/