utf 8 - 将 UTF16(Windows wchar_t) 转换为 UTF8 C++ 非英语字母损坏(韩语)

utf 8 - Converting UTF16(Windows wchar_t) to UTF8 in C++ Non-English letters corrupted(Korean)

本文关键字:C++ UTF8 英语 韩语 损坏 转换 UTF16 Windows wchar utf      更新时间:2023-10-16

我正在尝试制作一个多平台应用程序。在 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 完全能够编码非英语语言,因为它可以为单个字母使用多个字节。转换中是否有损坏非英语字母的内容?

事实证明,这只是一个调试器的东西。一旦我把它写到一个文件并检查它,它就正确地打印出来了。