
1个回答
展开全部
unicode编码在直接用wchar_t读取就可以了,能读取但是在中文操作系统无法正确显示韩文。
#include <stdio.h>
#include <malloc.h>
#include <locale.h>
wchar_t byteReverse(wchar_t in)
{
return ((in & 0xFF00) >> 8) | ((in & 0x00FF) << 8);
}
int main()
{
wchar_t * pBuf = NULL;
FILE * fp = fopen("unicode.txt", "rb");
setlocale(LC_ALL, ".949"); // 设置韩文代码页
if(fp)
{
wprintf(L"File open Successful\n");
fseek(fp, 0, SEEK_END);
int fLen = ftell(fp);
rewind(fp);
pBuf = (wchar_t *)malloc(fLen + sizeof(wchar_t));
if(pBuf)
{
int ret = fread(pBuf, sizeof(wchar_t), fLen / sizeof(wchar_t), fp);
pBuf[ret] = 0;
wprintf(L"Read %d chars\n", ret - 1);
if(*pBuf == 0xFEFF) // 小端
if(ret) wprintf(L"%ls\n", pBuf + 1);
else if(*pBuf == 0xFFFE) // 大端
{
for(int i = 0; i<ret; ++i) pBuf[i] = byteReverse(pBuf[i]);
wprintf(L"%ls\n", pBuf + 1);
}
else wprintf(L"%ls\n", pBuf); // 没有BOM
free(pBuf);
pBuf = NULL;
}
fclose(fp);
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询