1.字体文件:包含字符数据和编码表
UTF-8是unicode编码方式的一种实现,意思是unicode编码是确定的,一个数字对应一个符号,不同的是UTF-8是对这些数字做一些处理,当是单字节字符时,最高位为0,剩下七位和ascii码一样,多字节怎么处理的百度.
UTF-16LE/UTF-16BE都是unicode编码的一种实现
GB2312 国标码
GBK 国标扩展码
BIG5 港澳台使用的繁体
ANSI编码是字符用ASCII,汉字用GBK
字符数据 就是对应的字符的点阵排列是什么样的.
2.同一个文件以不同编码方式保存,里面所存储的结果不一样
unsigned char *str="abc中";
while(str[i]){
printf("%2x ",str[i]);
i++;
}
分别以asc码和UTF-8两种编码方式保存,打印出的结果
61 62 63 d6 d0 //ascii
61 62 63 e4 b8 ad //UTF-8
3.编译程序时要指定输入文件的字符集和输出文件的字符集
gcc -finput-charset=GBK -fexec-charset=UTF-8 -o ansi ansi.c //指定输入文件的字符集是国标扩展,指定输出文件
比如汉字"中",编写时以GBK保存,编译时的过程为
“d6 d0” ==>编译 ==> “e4 b8 ad”
即编译器会把字符部分以GBK码读出,再翻译成UTF-8的编码格式
编译器会默认以UTF-8来读,在编写时如果以UTF-8来编写程序,那么就不会出现字符乱码的问题…