c++ - MFC 中的 C++ UTF-8/ASCII 到 UTF-16
问题描述
在 MFC 程序中显示之前,如何将(文本)文件从 UTF-8/ASCII 转换为 UTF-16?因为 MFC 每个字符使用 16 位,而 Windows 上的大多数(文本)文件使用 UTF-8 或 ASCII。
解决方案
简单的答案称为MultiByteToWideChar和WideCharToMultiByte进行反向转换。还有CW2A和CA2W使用起来更简单一些。
但是,我强烈建议不要直接使用这些功能。您会遇到手动处理字符缓冲区的痛苦,这可能会造成内存损坏或安全漏洞。
使用基于 std::string 和/或迭代器的库要好得多。例如,utf8cpp。这个的优点是体积小、只有标题和多平台。
推荐阅读
- node.js - 在 AsyncWork.OnOK 函数中调用 Promise::Defered.Resolve() 时崩溃
- elasticsearch - 如何通过句子的开头正确过滤值?使用 Logstash 中的模式
- .net - HttpRequest 的 Nlog 布局渲染器,其中排除了 Authorization 标头
- selenium - WinAppDriver - 如何使用 WinAppDriver 和 Appium 控制多个桌面应用程序
- sql-server - SQL 数据透视表
- machine-learning - 使用 LSTM 和 CNN 对 Keras 进行故障排除以进行时间序列分类
- php - 将 VB6 代码转换为 PHP - 字节作为参数?
- python - 基于动态列表从ini文件中检索多个配置键
- sql - 一个组的每小时总平均数
- powershell - 在 Powershell 中的同一个文本文件中写入和加载