我使用下一个代码从一个文件中读取所有元素,其中包含有效的句柄hFile,以及我使用它的大小GetFileSize(hFile, NULL).
_TCHAR* text = (_TCHAR*)malloc(sizeOfFile * sizeof(_TCHAR));
DWORD numRead = 0;
BOOL didntFail = ReadFile(hFile, text, sizeOfFile, &numRead, NULL);
Run Code Online (Sandbox Code Playgroud)
操作之后text是日语中的一些奇怪的东西,而不是文件的内容.
我做错了什么?
编辑:我理解这是编码问题,但是如何将文本转换为LPCWSTR以使用WriteConsoleOutputCharacter之类的东西
现代IDE默认使用Unicode应用程序,_TCHAR实际上就是这样wchar_t.ReadFile()使用简单的字节,如果您使用它_TCHAR直接填充数组,您将获得解释为UTF-16 Unicode的8位字符.这些通常显示为CJK(中国/日本/韩国)字形.
你有三个选择:
MultiByteToWideChar()将文本转换为Unicode.如果混合Unicode和非Unicode,请小心计算正确的缓冲区大小(字节数与字符数).
请注意,如果您调用Windows函数的ANSI版本(例如WriteConsoleOutputCharacterA),您仍然可以在Unicode程序中使用带有Windows的窄字符.