c++ - UTF-8 从文件到文本框 VC++ 6.0

标签 c++ mfc utf-8 visual-c++-6

如何让旧的 VC++ 6.0 MFC 程序在 TextBox 或 MessageBox 中读取和显示 UTF8?最好不要破坏当前写入其中的任何文件读取和显示(相当大)。

我将一行读入 CString strStr,然后使用以下代码:

int nLengthNeeded = MultiByteToWideChar(CP_UTF8,0,strStr,1024,0,0);
wchar_t * pWCMessage = new wchar_t[ nLengthNeeded ];

MultiByteToWideChar(CP_UTF8,0,strStr,1024,pWCMessage,nLengthNeeded);

nLengthNeeded = MultiByteToWideChar(CP_UTF8,0,"Error Title",50,0,0);
wchar_t * pWCTitle = new wchar_t[ nLengthNeeded ];
MultiByteToWideChar(CP_UTF8,0,"Error Title",50,pWCTitle,nLengthNeeded);

MessageBoxW(NULL,pWCMessage,pWCTitle,MB_ICONINFORMATION);

仍然不确定如何将它放入文本框,但事实证明我不需要这样做。

最佳答案

我觉得这不会有帮助,但这是一个起点......我假设它不会“正常工作”,而且我认为你不想尝试使用古怪的代码来搞砸可能会或可能不会为您提供所需内容的页面。

如何仅使用 MultiByteToWideChar(CP_UTF8, ...) 将其转换为 utf16,然后调用这些函数的 W 版本(或为项目定义 UNICODE/_UNICODE)。

我知道这适用于 MessageBox,但我无法想象文本框不支持 unicode。

如果您需要将输出恢复为 UTF8 - 只需使用 WideCharToMultiByte()。

关于c++ - UTF-8 从文件到文本框 VC++ 6.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/439915/

相关文章:

c++ - GCC: --whole-archive 静态链接到 pthread 的方法在最近的 gcc 版本中停止工作

c++ - 字符串在转换为 c_str() 后变得乱七八糟

mfc - WinDbg 在 msdl.microsoft.com 上找不到 mfc90 版本 9.0.30729.4148 符号

linux - Bash - 一些命令不能正确显示引号

c++ - 由于下载由 libcurl 接收的 utf8 编码的 xml 数据而导致字符串损坏

c++ - 使用 Win32 线程模型时,MinGW-w64 是否支持开箱即用的 std::thread?

c++ - CoreFoundation 打印 Unicode 字符

c++ - 如何获取通过网络驱动器访问的文件的 UNC 路径?

c++ - 即使在设计器中更改高度后,组合框下拉菜单也不起作用

java - netbeans 8.1 上的 Tomcat 8 utf-8 配置不起作用