unicode码:只是规定了什么数值表示什么字符;仅定义了一个映射表,没有具体的编码,如何存储字符就是编码。
1.有多种方式可以表示unicode码。
测试:abc中保存为下面四种方式。
ascii码: 中国大陆默认是GB2312。
utf-8:EF BB BF 最常用的编码方式。前三个字节表示utf-8编码。
utf-16le;FF FE
utf-16be: FE FF
2.为什么有多种方式来表示unicode码?
因为会造成字节浪费。
3.utf-8简要讲解。
最大的特点:它是一种变长的编码方式,可以使用1~4个字节来表示一个符号;根据不同的字符而改变字节的长度。
1)
对于单字节而言:字节的第一位设为0,其余7位是字符的unicode码。
对于英文字母:和ascii码相同。
2)对于n(n>1)字节的符号,前n为设为1,n+1为设为0;后面字节前两位设为10,剩下未提及到的都是unico码。
可以写一个简单的测试代码测试"abc中",同时保存为ascci和utf-8格式
注意:linux下测试需要对变量进行初始化为0;
测试发现:直接编译运行后ascci的编码不对。
为何?
因为默认是以utf-8解析的。
如何解决?
man gcc
搜索 /charset
得出编译时需要制定输入输出字符集,默认是utf-8解析的。
-finput-char=charset -fexec-charset=charset
输入字符集 输出字符集(程序执行是以什么编码执行的)