Я сгенерировал следующий JSON, используя C ++:
{
"ProfileID": "DUO1",
"ProfileName": "Sample"}
Код, используемый для генерации, это:
string jsonData = "";
StringBuffer sb;
PrettyWriter<StringBuffer> writer(sb);
writer.StartObject();
writer.Key("ProfileID");
writer.String(strProfileId.c_str());
writer.Key("ProfileName");
writer.String(strName.c_str());
writer.EndObject();
jsonData = sb.GetString();
Он отлично работает для ProfileName на английском языке. Если имя профиля на другом языке (скажем, на китайском), как это можно сделать?
Я хочу сгенерировать JSON следующим образом:
{
"ProfileID": "DUO1",
"ProfileName": "不用客气"}
Я смог установить это китайское имя в wstring
,
Как правильно написать это в JSON?
RapidJSON поддерживает UTF-8 по умолчанию. Я предполагаю, что проблема в вашем компиляторе, а не в RapidJson. В Linux gcc рассматривает исходный код как UTF-8, а в Windows MSVC — нет.
На VS2008, Вы можете изменить это на Tools > Options > Environment > Documents
и проверка Save documents as Unicode when data cannot be saved in codepage
,
На VS2010 и позже, Вы можете указать кодировку для каждого файла с прагмой #pragma execution_character_set("utf-8")
,
Затем вы можете написать такие вещи, как writer.String(u8"不用客气");
,
Других решений пока нет …