fread函数读含有中文字符的文件时出现乱码
我的问题如标题所述,我的示例代码如下:
#include <stdio.h>
int main(int argc, char **argv)
{
FILE *fp = fopen("/home/android.txt", "r");
char tmp[256] = {0};
int byte = 0;
if (!fp)
{
return -1;
}
if ((byte = fread(tmp, sizeof(char), 256, fp)))
{
printf("len=%d, data:%s\n", byte, tmp);
}
fclose(fp);
return 0;
}
android.txt文件(Unicode编码,ANSI编码也是如此)内容如下:
android
Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中
文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,
最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平
板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。
2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年2月数
据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。
测试结果如下:
len=256, data:android
AndroidˇһזӔLinuxΪ»ᶄ¿ª·Ɣ´ë²ڗﶍ³£¬ҪʹԃԚ±䐯ʨ±¸¡£ĿǰʐδԐͳһא
τϳƣ¬א¹䂽µه�ɋʹԃ¡°°²¡±»ᰰ²ׂ¡±¡£Android²ڗﶍ³خ³䈁ndy Rubin¿ª·¢£¬
خ³縒ª֧³ֻᰰ05ŪԉGoogle˕¹ºע؊£¬²¢ة½¨¿ª·Ɗֻ넋¿ª·¢¸Ł¼£¬ᄃ
我分别试过Unicode编码和ANSI编码的“android.txt”文件,可在读取中文的时候,输出的还是乱码。
在此想请问下大家,出现乱码的这种情况是因为什么原因引起的?谁能为我解答一下,谢谢各位了。