首页 文章

在C中将UTF16(Windows wchar_t)转换为UTF8非英文字母已损坏(韩文)

提问于
浏览
-2

我正在尝试制作一个多平台应用程序 . 在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 回答

  • 0

    事实证明这只是一个调试器的事情 . 一旦我将其写入文件并进行检查,它就会正确打印出来 .

相关问题