[C++] 纯文本查看 复制代码
// Author: Beyes@groad.net
#include "stdafx.h"
#define BUF_SIZE 0x200
int _tmain(int argc, LPCTSTR argv[])
{
BYTE mbuf [BUF_SIZE];
BYTE wbuf [BUF_SIZE];
LPBYTE mbufp = mbuf;
HANDLE hInFile, hOutFile, hOutFile2;
DWORD nIn, nOut;
DWORD GB2312;
hInFile = CreateFile(argv[1], GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
hOutFile2 = CreateFile(argv[2], GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
hOutFile = GetStdHandle(STD_OUTPUT_HANDLE);
ReadFile (hInFile, mbuf, BUF_SIZE, &nIn, NULL);
mbuf[nIn] = '\0'; //避免数组越界
GB2312 = ((nIn - 3) / 3) * 2; //处理转换后的文本长度
MultiByteToWideChar( CP_UTF8, 0, (LPCSTR)mbufp, -1, (LPWSTR)wbuf,0x200 ); //先将 UTF-8 转为 Unicode
WideCharToMultiByte (CP_ACP, 0, (LPWSTR)wbuf, -1, (LPSTR)mbuf, 0x200, 0, 0); //再将 Unicode 转为 GB2312
mbufp += 1;
WriteFile (hOutFile, mbufp, GB2312, &nOut, NULL);
WriteFile (hOutFile2, mbufp, GB2312, &nOut, NULL);
CloseHandle(hInFile);
CloseHandle(hOutFile);
CloseHandle(hOutFile2);
return 0;
}