1

由于我的 MFC 程序处于 unicode 环境,因此下面的代码无法正常工作。

::WriteFile(hFile, TEXT("123456"), lstrlenW(TEXT("123456")), &dwByte, nullptr);
::CloseHandle(hFile);

结果是“123”,应该是“123456”

我在互联网上发现 Unicode BOM 可以解决这个问题。所以我修改了我的代码,如下所示。

WORD Unicode = 0xfeff; // UNICODE BOM
::WriteFile(hFile, &Unicode, 2, &dwByte, nullptr);
::WriteFile(hFile, TEXT("123456"), lstrlenW(TEXT("123456")), &dwByte, nullptr);
::CloseHandle(hFile);

但是,它没有任何区别。

似乎这是一个简单的问题,但我迷失了寻找解决方案。

任何想法都会受到欢迎。提前致谢。

4

2 回答 2

4

Writefile不写“文本”:它写“字节”。返回的lstrlenW数量wchar_t。您应该乘以sizeof(wchar_t)给第三个参数“要写入的字节数”

于 2012-03-26T06:25:45.223 回答
2

您不想使用lstrlenW来确定要写入的数据量——您需要告诉WriteFile要写入的字节数,而不是代码点的数量。现在,你告诉它 6,这对于 3 个字符来说已经足够了。

于 2012-03-26T06:22:47.947 回答