如何使:WriteFile在UNICODE环境下工作

How to make ::WriteFile work in UNICODE circumstance?

本文关键字:环境 工作 UNICODE 何使 WriteFile      更新时间:2023-10-16

下面的代码无法正常工作,因为我的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);

然而,这并没有什么区别。

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

任何想法都非常受欢迎。提前谢谢。

Writefile不写"text":它写"Bytes"。CCD_ 2返回CCD_。您可以乘以sizeof(wchar_t),以便给第三个参数"要写入的字节数"

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