我正在尝试制作多平台应用。在Windows应用商店应用(winrt)端,打开一个文件并以Platform :: String格式读取其路径,该格式为Windows中的wchar_t,UTF16。
由于我的核心逻辑与平台无关并且只使用标准C ++数据类型,因此我通过以下代码将路径转换为UTF8中的std :: string:
Platform::String^ copyPath = copy->Path;
std::wstring source(copyPath->Data());
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t >, wchar_t > convert;
std::string u8CopyPath = convert.to_bytes(source);
但是,当我在调试器中检查u8CopyPath时,它会显示非英语字符的损坏字母。据我所知,UTF-8完全能够编码非英语语言,因为它可以为一个字母使用多个字节。转换中是否存在破坏非英文字母的内容?
答案 0 :(得分:0)
事实证明这只是一个调试器。一旦我将其写入文件并进行检查,它就会正确打印出来。