RapidJSON: писать со строкой с китайскими иероглифами

Я сгенерировал следующий 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?

1

Решение

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"不用客气");,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]