2015-04-25 58 views
1

我試圖使用rapidjson來轉義utf8序列爲\uXXXX格式,但它不起作用。Rapidjson根本不編碼utf8序列

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業,我忘了提我使用Visual Studio 2010

回答

1

我試圖在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序列」是不正確的。

+0

哦,我正在運行Visual Studio 2010,將它添加到帖子中 – daisy