怎样将中文输出到文件?解决方案
怎样将中文输出到文件?
我使用下面的代码怎么输出的全是乱码呢?
注意我没用MFC
TCHAR str[] = TEXT( "你好 ");
static HANDLE hFile;
DWORD dwNumByte;
hFile = CreateFile(TEXT( "out.txt "),GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_FLAG_SEQUENTIAL_SCAN,(HANDLE)NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
MessageBox(NULL,TEXT( "打开文件错误 "),NULL,MB_OK);
DebugBreak();
}
//设置文件指针为文件尾
SetFilePointer(hFile,NULL,NULL,FILE_END);
WriteFile(hFile,str,lstrlen(str) * sizeof(TCHAR),&dwNumByte,NULL);
CloseHandle(hFile);
我记得昨天还可以正常输出,今天就不行了。怪!
------解决方案--------------------
WideCharToMultiByte
写的时候转化成多字节。
读的时候再转化回来
------解决方案--------------------
如果你昨天可以,可能是你昨天是使用非Unicode编译的.
如果使用Unicode编译,就要WideCharToMultiByte
我使用下面的代码怎么输出的全是乱码呢?
注意我没用MFC
TCHAR str[] = TEXT( "你好 ");
static HANDLE hFile;
DWORD dwNumByte;
hFile = CreateFile(TEXT( "out.txt "),GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_FLAG_SEQUENTIAL_SCAN,(HANDLE)NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
MessageBox(NULL,TEXT( "打开文件错误 "),NULL,MB_OK);
DebugBreak();
}
//设置文件指针为文件尾
SetFilePointer(hFile,NULL,NULL,FILE_END);
WriteFile(hFile,str,lstrlen(str) * sizeof(TCHAR),&dwNumByte,NULL);
CloseHandle(hFile);
我记得昨天还可以正常输出,今天就不行了。怪!
------解决方案--------------------
WideCharToMultiByte
写的时候转化成多字节。
读的时候再转化回来
------解决方案--------------------
如果你昨天可以,可能是你昨天是使用非Unicode编译的.
如果使用Unicode编译,就要WideCharToMultiByte