如何获取旧的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从文件到TextBox VC++ 6.0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/439915/

10-15 16:56