UTF-8编码问题,请各位大侠帮忙解释一下
我在一个文档中(test_iconv.txt)写入几个汉字(内容为:汉王科技)保存为UTF-8格式。然后写一个小程序并打印出每个字节的十六进制,程序如下:#include <stdio.h>
#include <string.h>
main(char argc, char **argv)
{
FILE *fp1;
char buffer;
int ch, i;
if (!(fp1 = fopen(argv, "r"))) {
printf("File cannot be opened: argv\n");
exit(1);
}
i = 0;
while ((ch = fgetc(fp1)) != EOF) {
buffer = ch;
printf("\n%x", ch);
if (i > 1999) {
printf("buffer not enough");
exit(1);
}
}
printf("\n%s\n", buffer);
fclose(fp1);
}
程序输出的结果如下:
xueping@xp-dev:/opt/xp-dev/c-dev/example$ ./file3 test_iconv.txt
e6
b1
89
e7
8e
8b
e7
a7
91
e6
8a
80
a
汉王科技
在windows下用UltraEdit以十六进制格式打开test_iconv.txt显示的内容如下:
FF FE 49 6C 8B 73 D1 79 80 62 0A 00
为什么两边打印出来的内容不一样?各位大侠帮忙解释一下。
UTF-8一个汉字为两个字节,为什么在Linux下4个汉字打印出来12字节?
如果把test_iconv.txt保存为gb2312,两边提取的结果是一样的。
[ 本帖最后由 xuepinge 于 2008-7-24 15:32 编辑 ] 找到问题了,UltraEdit是以Unicode格式打开utf-8格式的文件;如果把test_iconv.txt转换成UCS-2格式两边读取内容就一样了。 UTF-8一个汉字为两个字节
应该是:UTF-8一个汉字为三或四个字节 借您地儿问个相关的问题:
怎么判断以个文件的字符编码格式,特别是big5 貌似没办法?
如果有办法,为什么HTML 文件里面要有local set? 找到这个
http://topic.csdn.net/u/20080603/17/e056e384-93e2-44ed-8d62-63dc0b38546b.html 现在最达的问题就是big5的形式,不知道应该如何识别
页:
[1]