字符编码介绍及常见问题总结
⽬录
1. 了解字符编码
2. Unicode与UTF-8,UTF-16之间的关系
3. 字符编码常见问题
4. 相关资料链接
1. 了解字符编码
字符编码,即其字⾯意,就是每⼀个字符都对应⼀个编码(根据规格不同,最终得到的编码结果也不同)。我们在⽇常使⽤中,经常接触到的字符编码有以下三种:ASCII,ANSI,Unicode。
1. ASCII编码: 是这三种编码中最原始的编码⽅式,即采⽤⼀个字节(8位⼆进制位)对字符进⾏编码。低7位⼆进制位进⾏编码,第8位通常为0,⼗进制可以表⽰为00x8F。因此ASCII可以标识128个常⽤字符,其中有 96 个可打印字符,包括常⽤的字母、数字、标点符号等,另外还有 32 个控制字符。
2. ANSI编码: 是各个国家对ASCII的扩充,它根据⽤户所使⽤的系统的不同⽽不同,如在中⽂操作系统下,字符编码为GB2312编码,⽽在⽇⽂操作系统下,则是ANSI 编码代表 JIS 编码等。
因此也会出现⼀个问题:如果在中⽂系统中保存为ANSI编码,那么在⽇⽂操作系统中,直接打开就会出现乱码,因为此时⽇⽂系统的ANSI编码代表的是JIS编码,⽽保存的编码格式是GB2312编码。
3. Unicode编码: 上述中的ANSI编码⽅式得到的字符编码,由于其编码规范都具有区域性,因此,可能会出现,同⼀个字符使⽤不同编码⽅式时,出现不同编码值;同⼀个编码值在不同的编码⽅式中,代表的字符也不同。因此Unicode编码出现了,它统⼀了字符编码规范,使得字符和编码值实现⼀⼀对应的关系。
2. U nic o de与U TF-8,U TF-16之间的关系
UT F -8,UT F -16出现的原因
根据上⾯提到的Unicode已经满⾜了⼈们的同意编码的要求,但是为什么还会出现UTF-8和UTF-16这两种编码⽅式呢?
主要原因:直接使⽤Unicode编码的效率不⾼,⽐如UCS-4(Unicode的标准之⼀)规定⽤4个字节存储⼀个符号,那么每个英⽂字母前都必然有三个字节是0,这对存储和传输来说都很耗资源。
因此,UTF-8和UTF-16对于Unicode来说,就是提供了额外的编码⽅式。⽤特定的编码规则来解决Unicode编码的效率问题。
UT F -8,UT F -16如何解决效率问题
UTF-8不同字符对应编码值
由上图可知,⼀个英⽂字符占⽤1个字节,⼀个中⽂字符占⽤3个字节,⼀个表情(特殊字符)占⽤四个字节。128,⼗六进制为0x00
如上⾯提到的,在不同语⾔的操作系统中,打开使⽤ANSI编码保存的⽂本时,就会出现保存和打开时的编码⽅式不⼀致,如果在中⽂系统中保存为ANSI编码,那么在⽇⽂操作系统中,直接打开就会出现乱码,因为此时⽇⽂系统的ANSI编码代表的是JIS编码,⽽保存的编码格式是GB2312编码。
2. 本地编辑器设置打开的编码⽅式不正确
每个⽂本编辑器中都可以设置⽂本的编码格式。如sublime中⽂本⽂件默认的编码格式即为‘utf-8’,如果⽂本保存的格式为GBK,使⽤sublime打开时,默认使⽤uft-8格式,这就导致中⽂出现乱码。
sublime中设置默认编码格式
在sublime中,默认不会显⽰⽂本的字符编码,需要⼿动修改配置⽂件,菜单Perference → Settings – User,修改⽤户配置,覆盖默认配置。
sulime中默认不展⽰编码格式
在⽤户配置中进⾏配置
中文字符unicode查询
此时,浏览器就会忽略<meta charset="gbk">标签,使⽤响应头中标识的字符集,浏览器页⾯也会正常展⽰。
页⾯正常展⽰
4. 相关资料链接

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。