如何让旧的 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/