01.各种编码方式

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来编写程序,那么就不会出现字符乱码的问题…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值