我的Windows应用程序使用_wpopen调用系统命令。此命令产生一个UTF8响应,我尝试使用fgetws读取到wchar_t的缓冲区中。问题是我的缓冲区中的结果不正确。字符宽度可能有问题,因为我的缓冲区包含12个字符,在UTF8中它应该只包含4.我使用Microsoft Visual Studio 2010。
我已经独立验证系统命令产生正确的输出。因此,某种程度上,读取操作会混淆编码。该怎么办?谢谢!
答案 0 :(得分:0)
fgetws function期望输入为MBCS或UTF-16,具体取决于您是以文本还是二进制模式打开文件。它不处理UTF-8。
相反,使用fgets然后显式地从UTF-8转换为您想要使用的任何编码。