字符集与编码格式
来源:互联网 发布:诺基亚rm1013下载软件 编辑:程序博客网 时间:2024/06/06 12:37
BOM(Byte Order Mark)是一个字符,它表明UNICODE文本的UTF-16,UTF-32的编码字节顺序(高字节低字节顺序)和编码方式(UTF-8,UTF-16, UTF-32, 其中UTF-8编码是字节顺序无关的)。
如下所示:
Encoding Representation
UTF-8 EF BB BF
UTF-16 Big Endian FE FF
UTF-16 Little Endian FF FE
UTF-32 Big Endian 00 00 FE FF
UTF-32 Little Endian FF FE 00 00
有些utf8编码没有这个BOM,该怎么区分了,是utf8还是ansi(根本就没有BOM这个东西),下面先了解下utf8:
UTF-8是UNICODE的一种变长字符编码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节,而如果UNICODE字符由4个字节表示,则编码成UTF-8可能需要6个字节。用4个或6个字节去编码一个UNICODE字符可能太多了,但很少会遇到那样的UNICODE字符。
UFT-8转换表表示如下:
UNICODE UTF-8
00000000 - 0000007F 0xxxxxxx
00000080 - 000007FF 110xxxxx 10xxxxxx
00000800 - 0000FFFF 1110xxxx 10xxxxxx 10xxxxxx
00010000 - 001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
00200000 - 03FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
04000000 - 7FFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
实际表示ASCII字符的UNICODE字符,将会编码成1个字节,并且UTF-8表示与ASCII字符表示是一样的。所有其他的UNCODE字符转化成UTF-8将需要至少2个字节。
以上是网上找的utf8编码介绍,对于这个转换表可以看作一个模板,对于以标示的二进制位值是固定的,XX位是将字符以unicode编码,然后根据值的大小分段,决定使用哪个模板,高位在前的次序填入XX位.
ascii占用一个字节,一般我们见到的其它字符都是占用3个字节,套用00000800 - 0000FFFF 1110xxxx 10xxxxxx 10xxxxxx这个模板,这样第一个字节就是>=11100000(&HE0) and < 11110000(&HF0),后面两个字节>=10xxxxxx(&H80) and < 11000000(&HC0),我们就可以根据这点来写代码了,符合这个规则的都被判为utf8,否则为ansi.
GB2312
单字节: 00-80 (*)
编码范围[A1-F7,A1-FE]
GBK
单字节: 00-80 (*)
双字节: 81-FE | (40-7E、80-FE)
GB18030
单字节: 00-80 (*)
双字节: 81-FE | (40-7E, 80-FE)
四字节: 81-FE | 30-39 | 81-FE | 30-39
- 字符集与编码格式
- 字符集与编码格式
- 字符集与编码格式
- 字符集和编码格式
- 字符集和编码格式
- 字符集以及编码格式
- 字符集与字符集编码简介
- 字符集与字符集编码简介
- 字符集与字符集编码详解
- 常见编码格式及字符集
- 字符集(编码格式相关)
- 编码字符集与字符集编码的区别
- 编码字符集与字符集编码的区别
- 编码字符集与字符集编码的区别
- 编码字符集与字符集编码的区别
- 编码字符集与字符集编码的区别
- 编码字符集与字符集编码的区别
- 编码字符集与字符集编码的区别
- 排序算法的java实现
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- 在来比较一下Java和C++的一些重要特征
- HDU 1358 Period(KMP)
- mysql安装图解 mysql图文安装教程(详细说明)
- 字符集与编码格式
- vim中的杀手级插件: vundle
- JAVA梳理(1)——static修饰属性的实际应用
- JAVA概述(11) 面向对象(static静态详解)①
- adb命令
- Codeforces Round #236 (Div. 1)(A, B, C, D)
- R.java不能自动生成资源ID的问题
- 装饰器模式
- android中文api (59) —— TabHost.TabSpec