I have json with a Japanese string
{
"title":"\u4e2d\u6587\u901a\u77e5\u53f0\u5934"
}
while I parse using the following code I don't get this above Japanese string,
Msg contains the json as a string.
try {
boost::property_tree::ptree pt;
std::istringstream isbuf(Msg.c_str());
boost::property_tree::read_json(isbuf, pt);
std::string title = pt.get<string>("title", "");
} catch (std::exception const& e) {
printf("Invalid : %s", e.what());
}
[править] Я получаю это строковое значение в объекте std :: string, но исходная проблема возникает, когда я использую строку в диалоговом окне Windows как статический текст. Я решил использовать wstring titleW = boost :: locale :: conv :: utf_to_utf (title);
Чем использовал titleW в диалоговом окне Windows.
заранее спасибо Бирадженду
JSON - это текстовый файл, поэтому \u4e2d состоит из 6 символов (6 латинских 1 байтов), а не символа 中 (4 байта). Храните символы хираганы / катаканы, как они есть в JSON. В противном случае вам нужно будет сначала преобразовать все символы из шестнадцатеричных значений в char32_t (UTF-32LE | BE), а затем в UTF-8 или UTF-16LE | BE
Я не получаю исключения, но я ошибаюсь в строке.





У вас есть исключение? Строка выглядит неправильно? PTree хранит строку как UTF-8 внутри.