目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。
我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。
ASCII表
ASCII值
|
控制字符
|
ASCII值
|
控制字符
|
ASCII值
|
控制字符
|
ASCII值
|
控制字符
|
0
|
NUL
|
32
|
(space)
|
64
|
@
|
96
|
、
|
1
|
SOH
|
33
|
!
|
65
|
A
|
97
|
a
|
2
|
STX
|
34
|
”
|
66
|
B
|
98
|
b
|
3
|
ETX
|
35
|
#
|
67
|
C
|
99
|
c
|
4
|
EOT
|
36
|
$
|
68
|
D
|
100
|
d
|
5
|
ENQ
|
37
|
%
|
69
|
E
|
101
|
e
|
6
|
ACK
|
38
|
&
|
70
|
F
|
102
|
f
|
7
|
BEL
|
39
|
,
|
71
|
G
|
103
|
g
|
8
|
BS
|
40
|
(
|
72
|
H
|
104
|
h
|
9
|
HT
|
41
|
)
|
73
|
I
|
105
|
i
|
10
|
LF
|
42
|
*
|
74
|
J
|
106
|
j
|
11
|
VT
|
43
|
+
|
75
|
K
|
107
|
k
|
12
|
FF
|
44
|
,
|
76
|
L
|
108
|
l
|
13
|
CR
|
45
|
-
|
77
|
M
|
109
|
m
|
14
|
SO
|
46
|
.
|
78
|
N
|
110
|
n
|
15
|
SI
|
47
|
/
|
79
|
O
|
111
|
o
|
16
|
DLE
|
48
|
0
|
80
|
P
|
112
|
p
|
17
|
DCI
|
49
|
1
|
81
|
Q
|
113
|
q
|
18
|
DC2
|
50
|
2
|
82
|
R
|
114
|
r
|
19
|
DC3
|
51
|
3
|
83
|
X
|
115
|
s
|
20
|
DC4
|
52
|
4
|
84
|
T
|
116
|
t
|
21
|
NAK
|
53
|
5
|
85
|
U
|
117
|
u
|
22
|
SYN
|
54
|
6
|
86
|
V
|
118
|
v
|
23
|
TB
|
55
|
7
|
87
|
W
|
119
|
w
|
24
|
CAN
|
56
|
8
|
88
|
X
|
120
|
x
|
25
|
EM
|
57
|
9
|
89
|
Y
|
121
|
y
|
26
|
SUB
|
58
|
:
|
90
|
Z
|
122
|
z
|
27
|
ESC
|
59
|
;
|
91
|
[
|
123
|
{
|
28
|
FS
|
60
|
<
|
92
|
"
|
124
|
|
|
29
|
GS
|
61
|
=
|
93
|
]
|
125
|
}
|
30
|
RS
|
62
|
>
|
94
|
^
|
126
|
~
|
31
|
US
|
63
|
?
|
95
|
—
|
127
|
DEL
|
NUL空字符(Null)
|
VT垂直制表
|
SYN空转同步
|
SOH标题开始
|
FF走纸控制
|
ETB信息组传送结束
|
STX正文开始
|
CR回车
|
CAN作废
|
ETX正文结束
|
SO移位输出
|
EM纸尽
|
EOY传输结束
|
SI移位输入
|
SUB换置
|
ENQ询问字符
|
DLE空格
|
ESC换码
|
ACK承认
|
DC1设备控制1
|
FS文字分隔符
|
BEL报警
|
DC2设备控制2
|
GS组分隔符
|
BS退一格
|
DC3设备控制3
|
RS记录分隔符
|
HT横向列表
|
DC4设备控制4
|
US单元分隔符
|
LF换行
|
NAK否定
|
DEL删除
|
英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。
但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0—127表示的符号是一样的,不一样的只是128—255的这一段,所以出现后面的统一编码方式。
注:
若想得到更详细的参见http://ascii.911cha.com/
2、各地的方言
在中国,大陆最常用的就是GBK18030编码,除此之外还有GBK,GB2312,这几个编码的关系是这样的。
字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用7位的ASCII编码,但为了处理汉字,又设计出用于简体中文的GB2312和用于繁体中文的big5。
GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。
GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。
从ASCII、GB2312到GBK,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK都属于双字节字符集 (DBCS)。
2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。从汉字字汇上说,GB18030在GB13000.1的20902个汉字的基础上增加了CJK扩展A的6582个汉字(Unicode码0x3400-0x4db5),一共收录了27484个汉字。
CJK就是中日韩的意思。Unicode为了节省码位,将中日韩三国语言中的文字统一编码。GB13000.1就是ISO/IEC 10646-1的中文版,相当于Unicode 1.1。
GB18030的编码采用单字节、双字节和4字节方案。其中单字节、双字节和GBK是完全兼容的。4字节编码的码位就是收录了CJK扩展A的6582个汉字。例如:UCS的0x3400在GB18030中的编码应该是8139EF30,UCS的0x3401在GB18030中的编码应该是8139EF31。
微软提供了GB18030的升级包,但这个升级包只是提供了一套支持CJK扩展A的6582个汉字的新字体:新宋体-18030,并不改变内码。Windows 的内码仍然是GBK。
也就是说Big5支持繁体中文,GB2312支持简体中文,Big5,GB2312是GBK的子集,GBK是GB18030的子集
日本:SJIS编码
注:
汉字编码简明对照表http://www.knowsky.com/resource/gb2312tbm.htm
3、Unicode
如果把各种文字编码形容为各地的方言,那么Unicode就是世界各国合作开发的一种语言。
在这种语言环境下,不会再有语言的编码冲突,在同屏下,可以显示任何语言的内容,这就是Unicode的最大好处。
那么Unicode是如何编码的呢?其实非常简单。
就是将世界上所有的文字用2个字节统一进行编码。可能你会问,2个字节最多能够表示65536个编码,够用吗?
Unicode的学名是"Universal Multiple-Octet Coded Character Set",简称为UCS。现在用的是UCS-2,即2个字节编码.
以现在的发展肯定是不够用得,如《康熙字典》收录了四万七千零三十五字,《汉语大字典》收录了五万六千多个。到目前为止,国际标准组织(ISO)制定国际标准时,共收集到汉字七万多字,所以出现UCS-4, 即4个字节编码,由原先的65536个编码扩展至将近100万编码。
注:
中日韩汉字Unicode编码表:http://www.chi2ko.com/tool/CJK.htm
查询需要Unicode编码的字符:
http://www.unicode.org/charts/unihan.html
http://www.nengcha.com/code/unicode/
4、兼容codepage
那么既然统一了编码,如何兼容原先各国的文字编码呢?这个时候就需要codepage了。
什么是codepage?codepage就是各国的文字编码和Unicode之间的映射表。比如简体中文和Unicode的映射表就是CP936,点这里查看官方的映射表。
以下是几个常用的codepage,相应的修改上面的地址的数字即可。
codepage=936简体中文GBK
codepage=950繁体中文BIG5
codepage=437美国/加拿大英语
codepage=932日文
codepage=949韩文
codepage=866俄文
codepage=65001 unicode UFT-8
从936中随意取一行,例如:0x9993 0x6ABD #CJK UNIFIED IDEOGRAPH.前面的编码是GBK的编码,后面的是Unicode。通过查这张表,就能简单的实现GBK和Unicode之间的转换
5、UTF-8
现在明白了Unicode,那么UTF-8又是什么呢?又为什么会出现UTF-8呢?
Unicode的最初目标,是用1个16位的编码来为超过65000字符提供映射。但这还不够,它不能覆盖全部历史上的文字,也不能解决传输的问题,尤其在那些基于网络的应用中。
因此,Unicode用一些基本的保留字符制定了三套编码方式。它们分别是UTF-8,UTF-16和UTF-32。正如名字所示,在UTF-8中,字符是以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处,是UTF-8保留了ASCII字符的编码做为它的一部分,例如,在UTF-8和ASCII中,“A”的编码都是0x41.
例:11100100 10111101 10100000à0xE4BDA0“你”字的UTF-8编码
01001111 01100000à0x4F60“你”的Unicode编码
按照UTF-8的编码规则,11100100 10111101 10100000分解如下:xxxx0100 xx111101 xx100000,把除了x之外的数字拼接在一起,01001111 01100000就变成“你”的Unicode编码了.注意UTF-8的最前面3个1,表示整个UTF-8串是由3个字节构成的经过UTF-8编码之后,再也不会出现敏感字符了,因为最高位始终为1。
Unicode和UTF-8之间的转换关系表:
0000 0000-0000 007F | 0xxxxxxx
0000 0000-0080 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
Unicode编码转换到UTF-8,简单的把Unicode字节流套到x中就变成UTF-8了。
相关推荐
该软件能快速查询中英文字符的ASCII、区位码、GB2312 码、Big5 码、GBK 内码、Unicode 码、UTF-8 码和 UTF-16 码。体积小、效率高、使用方便、批量转换、即输即得和多进制显示等。 V1.1 更新说明: 优化了部分...
详细介绍几种常用文件编码格式,ASCII、GB2312、GBK、GB18030、Big5、Unicode、UTF-8、UTF-16、UTF-32
该软件能快速查询中英文字符的ASCII、区位码、GB2312 码、Big5 码、GBK 内码、Unicode 码、UTF-8 码和 UTF-16 码。体积小、效率高、使用方便、批量转换、即输即得和多进制显示等。 V1.1 更新说明: 优化了部分...
该软件能快速查询中英文字符的ASCII、区位码、GB2312 码、Big5 码、GBK 内码、Unicode 码、UTF-8 码和 UTF-16 码。体积小、效率高、使用方便、批量转换、即输即得和多进制显示等。 V1.1 更新说明: 优化了部分...
中英文字符编码查询工具,工具支持ASCII、GB2312、BIG-5、GBK、Unicode、UTF8、UTF16等多重编码类型
GBK编码:1-2个字节,包含GB2312、ASCII、BIG5,注意:同一个繁体字在GBK和BIG5中的编码是各不相同的。GB18030编码:1字节、2字节、4字节,兼容GBK。UNICODE是国际统一编码,UCS-2标准:2字节,UCS-4标准:4字节。...
ASCII 区位码 GB2312 BIG5 GBK Unicode UTF8 UTF16查看工具
本文深入浅出地讨论编码的本质,包括ASCII, ISO 8859-1, Windows 1252, GB2312, GBK, GB18030, BIG5, Unicode, UTF-8, UTF-16, UTF-32,编码转换,乱码的形成,以及如何从乱码中恢复。
通常我们所遇到过多UTF-8这是Unicode编码的实现方式,请一定要加以区分。 GB2312字集是简体字集;BIG5字集是台湾繁体字集;GBK字集是简繁字集,包括了GB字集、BIG5字集和一些符号 GB18030是国家制定的一个强制性大字集...
识别文本文件编码格式,可识别近30种编码格式 public static int GB2312 = 0; public static int GBK = 1; public static int GB18030 = 2; public static int HZ = 3; public static int BIG5 = 4; ...
文本的字符串转换工具 ...功能:本软件用于将文本的字符串转换为 Text、ASCII、Default、Unicode、BigEndianUnicode、UTF-8、UTF-7、GBK、BIG5 之间的互相转换,用于文本查询。转换结果使用十六进制表示。
GBK编码:1-2个字节,包含GB2312、ASCII、BIG5,注意:同一个繁体字在GBK和BIG5中的编码是各不相同的。 GB18030编码:1字节、2字节、4字节,兼容GBK。 UNICODE是国际统一编码,UCS-2标准:2字节,UCS-4标准:4字节。...
查询各种编码 ------------- ASCII 区位 GB2312 BIG-5 GBK Unicode UTF-8 UTF-16 ------------- 二进制 八进制 十进制 十六进制
支持UTF-8,GBK,UTF-7,Unicode,ASCII,BIG5等编码互转,所在位置必须有init.xml
该软件能快速查询中英文字符的ASCII、区位码、GB2312 码、Big5 码、GBK 内码、Unicode 码、UTF-8 码和 UTF-16 码。体积小、效率高、使用方便、批量转换、即输即得和多进制显示等。
支持本地file及指定url的编码识别,支持多达40余种编码的识别,包括最常见的UTF-8,GBK,GB2312,BIG5,UNICODE,ISO8859_1,ASCII等
软件介绍: 该软件能快速查询中英文字符的ASCII、区位码、GB2312 码、Big5 码、GBK 内码、Unicode 码、UTF-8 码和 UTF-16 码。体积小、效率高、使用方便、批量转换、即输即得和多进制显示等。
EncodingDetect.java,java自动获取文件的编码,智能识别文件编码,支持本地file及指定url的编码识别,支持多达40余种编码的识别,包括最常见的UTF-8,GBK,GB2312,BIG5,UNICODE,ISO8859_1,ASCII等,FileUtil....