В нашем приложении мы читаем файл с китайским именем, скажем, 你好 .txt .Это имя файла передается пользовательским интерфейсом в бэкэнд-приложение C ++.
Пользовательский интерфейс передает его как ä½ å ¥ ½.txt , то есть UTF-8 TEXT , а не UTF-8.Поэтому, когда я пытаюсь прочитать один и тот же файл, он показывает «Файл не существует» в C ++.
Когда я выполняю поиск в сети, есть много методов, доступных для конвертации из и в UTF-8.Но я не смог найти подходящих методов, которые конвертируют из UTF-8 TEXT .
Может ли кто-нибудь помочь решить эту проблему?
Ответ: Использование приведенного ниже кодая перешел на китайский.И наш серверный метод может прочитать файл.
template <typename T>
void fromUTF8(const string& source, basic_string<T, char_traits<T>, allocator<T>>& result)
{
wstring_convert<codecvt_utf8_utf16<T>, T> convertor;
result = convertor.from_bytes(source);
}
Но, опять же, у меня есть еще одно место, где мне нужно построить JSON с китайским языком. Мы используем следующий код RapidJSON:
string jsonData = "";
StringBuffer sb;
PrettyWriter<StringBuffer> writer(sb);
writer.StartObject();
writer.Key("profileid");
witer.String(strOutProfileId.c_str());
writer.Key("profilename");
writerUTF16.String(profilename.c_str());
writer.EndObject();
jsonData = sb.GetString();
JSON: {"profileid": "DUP1", "profilename": "sample"} Если это на английском языке, это работает нормально.Я хочу построить как показано ниже:
{
"profileid": "DUP1",
"profilename": "不用客气"
}
имя профиля хранится в wstring.тогда как изменить писателя rapidjson для написания этого китайского.