在C ++ Windows中从System读取UTF8

时间:2012-08-01 06:48:23

标签: windows encoding utf-8 wchar-t

我的Windows应用程序使用_wpopen调用系统命令。此命令产生一个UTF8响应,我尝试使用fgetws读取到wchar_t的缓冲区中。问题是我的缓冲区中的结果不正确。字符宽度可能有问题,因为我的缓冲区包含12个字符,在UTF8中它应该只包含4.我使用Microsoft Visual Studio 2010。

我已经独立验证系统命令产生正确的输出。因此,某种程度上,读取操作会混淆编码。该怎么办?谢谢!

1 个答案:

答案 0 :(得分:0)

fgetws function期望输入为MBCS或UTF-16,具体取决于您是以文本还是二进制模式打开文件。它不处理UTF-8。

相反,使用fgets然后显式地从UTF-8转换为您想要使用的任何编码。