在C语言中 怎么读出用unicode编码的韩文txt?

或者直接可以统计出一个字出现的次数?韩文实在是读不出,总乱码。... 或者直接可以统计出一个字出现的次数?韩文实在是读不出,总乱码。 展开
 我来答
478617
2016-01-09 · TA获得超过875个赞
知道小有建树答主
回答量:725
采纳率:100%
帮助的人:108万
展开全部

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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式