/*
功能:实现对文件编码格式的判断
可以从文件的前三个字节中确定编码类型。
ANSI :无格式定义; (从第一个字节开始就是文件的内容)
Unicode :前两个字节是FFFE;
Unicode big endian :前两个字节是FEFF;
UTF-8 :前两个字节是EFBB,第三个字节是BF
*/
#包含
#包含
#包含
//读取文件的前n个字节,以十六进制输出每个字节的值
voidreadnbytes(char*filename,int n ) ) ) ) ) ) ) ) ) )。
{
file*FP=fopen(filename,' r ';
unsigned char * buf=(unsigned char * ) malloc ) sizeof(unsignedchar ) *n );
int i;
if (FP==空) )。
{
printf(openfile[%s]failed.n ',fileName );
返回;
}
fread(buf,sizeof(unsignedchar ),n,fp );
flose(FP );
printf('%s:(t ),fileName );
for(I=0; i n; I )
{
printf(%x(t ),buf[i] );
}
打印((n );
free(buf );
}
void main () )
{
char fileName[][50]={'ansi.txt '、' unicode.txt '、' ubigendian.txt '、' utf8.txt'};
int i;
for(I=0; i 4; I )
{
//各文件的内容是你what123456
读我(filename [ I ],3 );
}
}
每个测试文件的内容是你what123456
执行结果如下。
ansi.txt: c4 e3 77
unicode.txt: ff fe 60
ubigendian.txt: fe ff 4f
utf8.txt: ef bb bf