今天遇到一个使用fread和fgets读取文件出现乱码
fgets(readLine, MAX_LINE_SIZE, fp);
fread(readLine,1,MAX_LINE_SIZE,fp);
经过一番探索,发现因为文件编码是非ANSI格式(是UTF-8),最后将文本文件改为:
之后保存,再使用fgets和fread果然不再是乱码.
本以为是基础库默认解码是使用ANSI进行解码的,但是在我同事的电脑上,却能够读取非ANSI文件(使用的是同样的代码),之后经过一番分析发现fopen和fread这些函数会根据电脑当前的设置去进行编解码.
例如本次出现这种差异的原因是因为:
而我同事的是
设置成这个语言后,读取shift-JIS(日语字符集)文件不会出现乱码.而使用我的中文设置则会出现此乱码.
以上结果仅供参考,也算是对底层库函数的一种新认识.不仅是编译器环境的配置会导致编译出现差异的问题,连电脑的设置也会影响.希望自己在以后的开发路上留个心眼.
关于fread以及fgets读取文件出现乱码的问题
最新推荐文章于 2024-05-07 12:59:09 发布