代码如下:
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编码
wchar_t jian[5];
这个缓冲区太小了,你文本长度应该不止5吧。
关于读取unicode的完整例子,我回答过了,看这里
https://ask.csdn.net/questions/701696
先把数据读出来,然后进行Unicode转码,转码后的就是中文
首先我要告诉你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(); //没什么
}
这有现成的博客。声明一下,不是我的。
https://blog.csdn.net/zaffix/article/details/7217701