0

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

我已经独立验证了系统命令产生了正确的输出。因此,不知何故是读取操作弄乱了编码。该怎么办?谢谢!

4

1 回答 1

0

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

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

于 2012-08-02T00:23:21.457 回答