我正在尝试使用rapidjson将utf8序列转换为\uXXXX
格式,但它不起作用。
StringBuffer s;
Writer<StringBuffer, Document::EncodingType, ASCII<> > writer(s);
writer.StartObject();
writer.String("chinese");
writer.String("中文测试");
writer.EndObject();
cout << s.GetString() << endl;
该文件称它将被转义,但实际上它已被删除。
我尝试使用AutoUTF模板,但是here's no document for memory stream either
有什么想法吗?我也尝试了jsoncpp,但该库也不支持unicode
谢谢@Milo Yip,我忘了提到我正在使用Visual Studio 2010
答案 0 :(得分:2)
我在OS X上尝试过它的工作原理:
{"chinese":"\u4E2D\u6587\u6D4B\u8BD5"}
我认为问题在于,您使用的编译器不会将文字字符串"中文测试"
编码为UTF-8。 Linux / OSX将源代码视为UTF-8,但默认情况下不支持Windows。
您可以尝试使用C ++ 11 UTF-8文字u8"中文测试"
。或者,您可以从UTF-8编码的文件中读取字符串以进行测试。
问题已更新。在Visual Studio 2010及之后,有一个未记录的功能:
#pragma execution_character_set("utf-8")
这样文字字符以UTF-8编码。对于C ++ 11兼容的编译器,应使用u8"xxx"
文字。
无论如何,声称“Rapidjson根本不编码utf8序列”是不正确的。