我正在尝试制作一个多平台应用程序 . 在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完全能够编码非英语语言,因为它可以为一个字母使用多个字节 . 转换中是否存在破坏非英文字母的内容?
1 回答
事实证明这只是一个调试器的事情 . 一旦我将其写入文件并进行检查,它就会正确打印出来 .