请问C语言从文件读取数据,为什么中文读出来是乱码,英文读出来却是正确的呢?

yyxgs 2016-11-25 10:08:08
int main(int argc, char *argv[]) 
{
int i = 0;

FILE *fp = NULL;

fp = fopen("c:\\下载\\1.txt", "r");
if (!fp) {

printf("文件打开失败!\n");
sleep(3);
exit(1);
}

int length = 0;

fseek(fp, 0L, SEEK_END);
length = ftell(fp);
fseek(fp, 0L, SEEK_SET);

char* str = (char*)calloc(length + 1, sizeof(char));
if (!str) {

printf("内存分配失败!\n");
sleep(3);
exit(1);
}

fread(str, sizeof(char), length, fp);

printf("%s\n", str);

fclose(fp);
fp = NULL;

quit_enter(1);
return 0;
}
...全文
1082 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2020-11-22
  • 打赏
  • 举报
回复 1
引用 2 楼 paschen 的回复:
txt文件用ANSI编码保存
老哥 太感谢了 能说下为什么吗
虛擬時間SOS 2018-01-22
  • 打赏
  • 举报
回复
将数据转成宽字节然后输出就可以了,fopen()fread()读出来的数据是ASCII
ooolinux 2016-11-26
  • 打赏
  • 举报
回复 1
用Windows记事本——另存为,可以看到编码,是不是存为UTF-8了?有些系统比如Linux,默认的字符编码是UTF-8。
paschen 2016-11-25
  • 打赏
  • 举报
回复
txt文件用ANSI编码保存
yyxgs 2016-11-25
  • 打赏
  • 举报
回复

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧