C++ C++;用Wininet进行UTF-8编码
我在通过Wininet阅读网页时遇到一些编码问题。 这就是我正在做的:C++ C++;用Wininet进行UTF-8编码,c++,visual-studio-2010,utf-8,wininet,C++,Visual Studio 2010,Utf 8,Wininet,我在通过Wininet阅读网页时遇到一些编码问题。 这就是我正在做的: char receivedContent[16344]; InternetReadFile(hInternetRequest, receivedContent, 16344, &charsRead); 当我尝试将收到的字符输出到控制台或Windows控件(例如MessageBox)时,会出现问题,其中每个非ANSI字符都变成\uxxx 我还尝试使用MultiByteToWideChar()函数,但它似乎没有改变任何
char receivedContent[16344];
InternetReadFile(hInternetRequest, receivedContent, 16344, &charsRead);
当我尝试将收到的字符输出到控制台或Windows控件(例如MessageBox)时,会出现问题,其中每个非ANSI字符都变成\uxxx
我还尝试使用MultiByteToWideChar()函数,但它似乎没有改变任何事情
wchar_t receivedContentUtf[4086];
MultiByteToWideChar(CP_UTF8, 0, receivedContent, -1, receivedContentUtf, 4086);
MessageBox::Show(gcnew System::String(receivedContentUtf);
是什么阻止您编写一些代码来用所需字符替换\uxxx\顺便说一下,Uxxx与UTF-8无关。您是否有意使用C++/CLI<代码> > GCNEX//COD>不是标准C++,并且有一个C++兼容的函数,可以直接使用<代码> WCARYTT[]/COD>直接。@ john Well,我可以用适当的字符替换那些UXXXX,但是我需要的不仅仅是几个字符,就像一个语言中的符号一样。基本上,这个函数应该能够正确读取服务器抛出的任何UTF字符。我不知道它是否与UTF/编码相关,但对我来说,它似乎会影响例如变音字符和西里尔字符,所以我认为这有问题。@mAlters是的,我是有意使用它的。MessageBox只是我目前用于测试此函数是否返回正确字符的一个示例。然后,这些数据将被解析并存储在其他表单组件中。@user3017072:这是一个相当模糊的表示法。根据
strlen()
,“s\u0142owo”
中有多少个字符?5还是10?另外,服务器发送一个编码响应,您确定服务器真的在发送słowo而不是s\u0142owo吗?