C ++:将UTF-8文本转换为UTF-8或UTF-16

时间:2018-06-13 07:58:29

标签: c++ utf-8 utf-16

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

0 个答案:

没有答案