首页 > 解决方案 > MFC 中的 C++ UTF-8/ASCII 到 UTF-16

问题描述

在 MFC 程序中显示之前,如何将(文本)文件从 UTF-8/ASCII 转换为 UTF-16?因为 MFC 每个字符使用 16 位,而 Windows 上的大多数(文本)文件使用 UTF-8 或 ASCII。

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

解决方案


简单的答案称为MultiByteToWideCharWideCharToMultiByte进行反向转换。还有CW2ACA2W使用起来更简单一些。

但是,我强烈建议不要直接使用这些功能。您会遇到手动处理字符缓冲区的痛苦,这可能会造成内存损坏或安全漏洞。

使用基于 std::string 和/或迭代器的库要好得多。例如,utf8cpp。这个的优点是体积小、只有标题和多平台。


推荐阅读