几种编码的对比:ASCII,Unicode,ANSI,UTF-8
来源:互联网 发布:清华男子自宫真相知乎 编辑:程序博客网 时间:2024/06/09 23:54
ASCII:用单字节表示,共有128个ASCII字符,最高位总为0
Unicode:用双字节表示,可表示65000个字符,以Unicode编码的文件包含一个文件头“FFFE”,彼此来表示该文件的编码格式为Unicode
当用Unicode编码来表示ASCII码字符时,高八位为00, 所以如果一个Unicode字符的高八位为00时,将其低八位按照ASCII编码解码;反之,则按非ASCII码解码。
如果一个文件中的字符都是ASCII码字符,却采用Unicode编码时,该文件的大小将翻倍,这样非常浪费空间,而ANSI可以避免这个问题
ANSI:对ASCII字符采用单字节表示,对Unicode字符采用双字节表示。
那么ANSI是怎样区分一个字符是双字节还是单字节呢?前面我们提到了ASCII字符的最高位为0, 所以当读到一个字节最高位为0时,则将该字节按ASCII解码;而如果最高位为1,说明该字符是双字节,需要等到读入下一个字节,再一起按照Unicode解码
Windows系统在处理Unicode是按照little endian的方式处理,即先处理低八位,再处理高八位,其他的系统可能相反;而ANSI不存在这种问题,始终是先处理高八位,再处理低八位。Unicode big endian和ANSI的处理顺序相同。
UTF-8:是使用最广的一种实现Unicode的方式,使用一到四个字节表示,变长。它的编码规则是:
(1)单字节的字符的编码就是其ASCII码 (最高位为0)
(2)对于长于一个字节的符号,假设有n(n>1)个字节,第一个字节的前n位设为1, 接下来是一个0, 剩余的字节的前两位均设为10. 剩余的位数用于存放该字符的Unicode编码,将该Unicode编码填入剩余位时,按照从右向左的顺序填写,多出的位填0.
尽管ANSI和UTF-8都可以用于表示ASCII和Unicode编码的混合字符集,但是UTF-8应用更广泛,更灵活,比ANSI表示的范围更广,并且UTF-8的规则统一,而在不同的操作系统下,ANSI编码不同,这些不同的ANSI编码之间不兼容。
Unicode:用双字节表示,可表示65000个字符,以Unicode编码的文件包含一个文件头“FFFE”,彼此来表示该文件的编码格式为Unicode
当用Unicode编码来表示ASCII码字符时,高八位为00, 所以如果一个Unicode字符的高八位为00时,将其低八位按照ASCII编码解码;反之,则按非ASCII码解码。
如果一个文件中的字符都是ASCII码字符,却采用Unicode编码时,该文件的大小将翻倍,这样非常浪费空间,而ANSI可以避免这个问题
ANSI:对ASCII字符采用单字节表示,对Unicode字符采用双字节表示。
那么ANSI是怎样区分一个字符是双字节还是单字节呢?前面我们提到了ASCII字符的最高位为0, 所以当读到一个字节最高位为0时,则将该字节按ASCII解码;而如果最高位为1,说明该字符是双字节,需要等到读入下一个字节,再一起按照Unicode解码
Windows系统在处理Unicode是按照little endian的方式处理,即先处理低八位,再处理高八位,其他的系统可能相反;而ANSI不存在这种问题,始终是先处理高八位,再处理低八位。Unicode big endian和ANSI的处理顺序相同。
UTF-8:是使用最广的一种实现Unicode的方式,使用一到四个字节表示,变长。它的编码规则是:
(1)单字节的字符的编码就是其ASCII码 (最高位为0)
(2)对于长于一个字节的符号,假设有n(n>1)个字节,第一个字节的前n位设为1, 接下来是一个0, 剩余的字节的前两位均设为10. 剩余的位数用于存放该字符的Unicode编码,将该Unicode编码填入剩余位时,按照从右向左的顺序填写,多出的位填0.
尽管ANSI和UTF-8都可以用于表示ASCII和Unicode编码的混合字符集,但是UTF-8应用更广泛,更灵活,比ANSI表示的范围更广,并且UTF-8的规则统一,而在不同的操作系统下,ANSI编码不同,这些不同的ANSI编码之间不兼容。
- 几种编码的对比:ASCII,Unicode,ANSI,UTF-8
- ASCII、ANSI、UNICODE及UTF-8编码
- ASCII、ANSI、Unicode及UTF-8编码
- ASCII、ANSI、UNICODE及UTF-8编码
- ASCII、ANSI、UNICODE及UTF-8编码
- ASCII、ANSI、UNICODE及UTF-8编码
- ASCII、ANSI、Unicode及UTF-8编码
- ANSI、ASCII、Unicode和UTF-8编码
- ANSI、ASCII、Unicode和UTF-8编码
- ANSI、ASCII、Unicode和UTF-8编码
- 字符编码的故事(ASCII,ANSI,Unicode,Utf-8)
- 字符编码的故事(ASCII,ANSI,Unicode,Utf-8)
- 字符编码的故事(ASCII,ANSI,Unicode,Utf-8)
- ANSI,UTF-8,Unicode,ASCII编码的区别
- ANSI,UTF-8,Unicode,ASCII编码的区别
- ANSI、Unicode、Unicode big endian、UTF-8四种编码方式的对比
- 编码: ASCII(ANSI), GB-2312, UNICODE, UTF-8,UTF-16
- 字符编码(ASCII、ANSI、UNICODE及UTF-8编码)
- 请描述Java中异常处理机制的简单原理和应用,并说明Error与Exception有什么区别?
- 设计用户注册页面(常用组件的应用)
- 让windows 2003 x86支持4G以上内存
- 重载流插入运算符<<和流提取运算符>>
- 研究生生活的思考?
- 几种编码的对比:ASCII,Unicode,ANSI,UTF-8
- 微计算机总线
- C# winform 条形码打印
- Ruby on Rails安装过程中出现"no such file to load -- mkmf"错误的解决方法。
- WinPcap 中文技术文档(4.1.2) 第一章
- Qt学习之3——继续修改
- 【读书笔记】《大学算法教程》——chpt6.排序和选择
- 中文乱码问题
- jQuery.alert