gpt4 book ai didi

c++ - 在文本文件上调用 ReadFile,得到奇怪的(日语?)字符

转载 作者:太空狗 更新时间:2023-10-29 19:54:40 29 4
gpt4 key购买 nike

我使用下一个代码从句柄为 hFile 的文件中读取所有元素行得通,而且我用 GetFileSize(hFile, NULL) 得到了它的大小.

_TCHAR* text = (_TCHAR*)malloc(sizeOfFile * sizeof(_TCHAR));
DWORD numRead = 0;
BOOL didntFail = ReadFile(hFile, text, sizeOfFile, &numRead, NULL);

手术后text是日语之类的一些奇怪的东西,而不是文件的内容。

我做错了什么?

编辑:我知道这是编码问题,但是我如何将文本转换为 LPCWSTR 以使用 WriteConsoleOutputCharacter 之类的东西

最佳答案

现代 IDE 默认为 Unicode 应用程序,这意味着 _TCHAR 实际上是 wchar_tReadFile() 处理简单字节,如果您使用它直接填充 _TCHAR 数组,您将获得解释为 UTF-16 Unicode 的 8 位字符。这些通常显示为 CJK(中文/日文/韩文)字形。

你有三个选择:

  • 将您的程序转换为非 Unicode
  • 使用包含 Unicode 文本(UTF-16 编码)的文件,或者
  • 从文件中读入一个字符数组,然后使用MultiByteToWideChar()将文本转换为 Unicode。

如果混合使用 Unicode 和非 Unicode,请小心计算正确的缓冲区大小(字节数与字符数)。

请注意,如果您调用 Windows 函数的 ANSI 版本(例如 WriteConsoleOutputCharacterA),您仍然可以在 Unicode 程序中使用 Windows 的窄字符。

关于c++ - 在文本文件上调用 ReadFile,得到奇怪的(日语?)字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5283132/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com