问题:我试图从json文件中提取一行并将其放入txt文件中。问题是某些字符表示为转义的unicode,而不是标准的unicode表示。
尝试解决此问题:我不确定是什么导致了这个问题。我的猜测是,这与JSONcpp是unicode 8而不是unicode 16有关。我通过查找https://stackoverflow.com/questions/4804298/how-to-convert-wstring-into-string查找了将unicode 8字符串转换为16的方法。但那也没用。我还查找了它是否与文件流系统https://en.cppreference.com/w/cpp/io/basic_fstream有关,这也没有得到我想要的结果。](https://stackoverflow.com)
示例代码
Json::Value root;
Json::Reader reader;
Json::StyledStreamWriter writer;
ifstream file("fileName");
//wifstream file(L"fileName");
//ifstream<wchar_t> file("FileName");
std::fstream txtFile("txtFileName");
reader.parse(file, root);
Json::Value events = root["events"];
//contains "He said “stop!”."
tempDialogue = events[eventIndex]["pages"][pageIndex]["list"][listIndex]["parameters"][0];
writer.write(txtFile, tempDialogue);
file.close();
txtFile.close();
文本文件,而不是包含
“他说\u201cHey站住\u201d。”
预期结果
”他说“停!“.”
1条答案
按热度按时间7y4bm7vi1#
JSON规范允许非ascii字符以原生UTF-8编码或
\uXXXX
转义表示。JSONCPP在内部将所有内容转换为本机UTF-8编码,因此您看到的是StreamWriter默认配置的结果。你可以自己构造一个StreamWriter,它使用StreamWriterBuilder只发出UTF-8格式: