qq_39466976
2019-04-04 10:57
采纳率: 80%
浏览 1.1k

C语言如何读取Unicode编码的txt中的中文?

代码如下:

    wchar_t jian[5];
    fp = _wfopen(L"D:\\vsObject\\test1\\test1\\all.txt", L"rb");
    if (fp == NULL)
    {
        printf("读取失败");
    }
    else
    {
        while (fgetws(jian, 5000, fp) != NULL)
        {
            wprintf(L"%s\n", jian);
        }
        fclose(fp);
    }

除了文本里的英文可以输出,但是中文全是问号乱码,文本为Unicode编码

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • blownewbee 2019-04-04 11:10
    已采纳

    wchar_t jian[5];
    这个缓冲区太小了,你文本长度应该不止5吧。

    关于读取unicode的完整例子,我回答过了,看这里
    https://ask.csdn.net/questions/701696

    点赞 打赏 评论
  • qq_41007737 2019-04-04 11:09

    先把数据读出来,然后进行Unicode转码,转码后的就是中文

    点赞 打赏 评论
  • 蒙召. 2019-04-04 11:29

    首先我要告诉你Unicode和宽字符并不等价
    你要把Unicode转成Ascii,下面是源码,请采纳:

    typedef unsigned short unicode_char;     //unicode字符类型 
    
    void Unicode2Ascii(unsigned short* src,char*tar)     //Unicode转ASCII的函数     具体不讲了 
    {
        unsigned int n;
        n=WideCharToMultiByte(0,0,src,(unsigned int)-1, 0, 0,0,0);                  //官方提供的转换函数    不讲 
        WideCharToMultiByte(0,0,src,(unsigned int)-1,(unsigned char*)tar-1,n,0,0);
        tar[n]=0;
    }
    
    int main()
    {   
        FILE *fp;
        fp=fopen("D:\\vsObject\\test1\\test1\\all.txt","r");      //打开文件 
    
        unicode_char uBuff[100];
        fgets((char*)uBuff,100,fp);     //读取文件 
    
        char buff[100];
        Unicode2Ascii(uBuff,buff);   //转换并保存到 buff
    
        printf("%s",buff);          //输出 
    
        getch();                        //没什么 
    }
    
    
    点赞 打赏 评论
  • S•c 2019-04-05 15:32

    这有现成的博客。声明一下,不是我的。
    https://blog.csdn.net/zaffix/article/details/7217701

    点赞 打赏 评论

相关推荐 更多相似问题