在我们的应用程序中,我们正在阅读一个具有中文文件名的文件,例如你好.txt 。此文件名由UI传递给后端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作者写这个中文。