最新UCS2 UCS4 中文字符编码 TTF字库之间的关系文档格式.docx
- 文档编号:14740309
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:15
- 大小:260.92KB
最新UCS2 UCS4 中文字符编码 TTF字库之间的关系文档格式.docx
《最新UCS2 UCS4 中文字符编码 TTF字库之间的关系文档格式.docx》由会员分享,可在线阅读,更多相关《最新UCS2 UCS4 中文字符编码 TTF字库之间的关系文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
当然了这其中的编码都是科学合理的,也不是随心所欲的。
3.常见字符集
3.1ASCII:
AmericanStandardCodeforInformationInterchange,美国信息交换标准码。
目前计算机中用得最广泛的字符集及其编码,由美国国家标准局(ANSI)制定。
它已被国际标准化组织(ISO)定为国际标准,称为ISO646标准。
ASCII字符集由控制字符和图形字符组成。
在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。
所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。
奇校验规定:
正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1。
偶校验规定:
正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
下表就是ASCII编码表:
ASCII值
控制字符
控制字符
0
NUT
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
80
P
112
p
17
DCI
49
81
Q
113
q
18
DC2
50
82
R
114
r
19
DC3
51
83
X
115
s
20
DC4
52
84
T
116
t
21
NAK
53
85
U
117
u
22
SYN
54
86
V
118
v
23
TB
55
87
W
119
w
24
CAN
56
88
120
x
25
EM
57
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
ASCII收录了空格及94个“可印刷字符”,足以给英语使用。
但是,其他使用拉丁字母的语言(主要是欧洲国家的语言),都有一定数量的变音字母,故可以使用ASCII及控制字符以外的区域来储存及表示。
除了使用拉丁字母的语言外,使用西里尔字母的东欧语言、希腊语、泰语、现代阿拉伯语、希伯来语等,都可以使用这个形式来储存及表示。
很明显这种编码表示的字符范围很窄,无法表示中文字符。
3.2汉字编码
3.2.1区位码国标码
1980年,为了使每一个汉字有一个全国统一的代码,我国颁布了第一个汉字编码的国家标准:
GB2312-80《信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息处理技术的发展基础,也是目前国内所有汉字系统的统一标准。
这个标准用两个数来编码汉字和中文符号。
第一个数称为“区”,第二个数称为“位”。
所以也称为区位码。
1-9区是中文符号,16-55区是一级汉字,56-87区是二级汉字。
国标码是一个四位十六进制数,区位码是一个四位的十进制数,每个国标码或区位码都对应着一个唯一的汉字或符号,但因为十六进制数我们很少用到,所以大家常用的是区位码,它的前两位叫做区码,后两位叫做位码。
用一句简单的话说就是区位码人使用起来比较方便,而国标码是为了给计算机使用。
当然一会讲到两者的关系。
总之这个GB2312-80就是一张大表,这张94*94的大表规定了哪个汉字用哪个编码(数字)来代替。
例如”土”的区位码4533。
它表示“土“字在45区的33位.其在表中的位置可以如下图所示:
那它又是如何转为国标码的呢。
按规定把区位码的区和位分别+160就是相应的国标码,45+160=205=0xCD,33+160=193=0xC1那么0xCDC1就是”土“的国标码。
为什么要加上0xA0呢,主要是为了和ASCII的编码区分开来,以便让计算机知道是一个字节的英文还是两个字节的中文,现在计算机知道了所有的中文第一个字节都大于0xA0,由于经常说起人们还给他起了一个名字(LeadingByte)。
这种表示的字符集又叫MBCS因为WINDOWS只使用了两个字节所以又叫DBCS。
3.2.2大端和小端模式
现在我们知道了在计算机里是用两个字节来表示一个中文字符的。
现在有一个问题。
当我们打开一个文本文件,并读取到了“D7D6B7FBBACDB1E0C2EB”这十个字节。
现在我们知道D7D6根据国标码规则应该是一个汉字,但这究竟应该是0xD7D6呢,还是0xD6D7呢。
这就是有名的大端模式和小端模式。
bigendian和littleendian(大端模式和小端模式)“endian”这个词出自《格列佛游记》。
小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,一个皇帝送了命,另一个丢了王位。
我们一般将endian翻译成“字节序”,将bigendian和littleendian称作“大尾”和“小尾”。
所谓大端模式就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
小端模式就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
下面是把一个LONG型的数据0x12345678存放到内存里里两种方式的排列方法:
在我的X86结构的计算机里,用的是小端模式。
那么其中”D7D6”就是国标码的”字”这个字符。
3.2.3代码页
现在我们知道了在中国大陆我们使用我们的GBK,那在台湾,在日本,在韩国使用什么呢?
没错如你所猜测的,每个地区都有每个地区的标准。
我们的叫GBK而台湾的就叫Big5。
由于自己制定的标准那么就出现了一个编码按不同的编码出现两个符号的情况。
0xD1C6这个国标码在GB2312的编码下是一个”哑”字,而在Big5的编码下却是一个““字。
那么WINDOWS到底应该把这个编码译为哪个字符呢。
又是如何译的呢?
这就不得不说代码页。
代码页(CodePage)是个古老的专业术语,据说是IBM公司首先使用的。
代码页和字符集的含义基本相同,代码页规定了适用于特定地区的字符集合,和这些字符的编码。
可以将代码页理解为字符和字节数据的映射表。
Windows为自己支持的代码页都编了一个号码。
例如代码页936就是简体中文GBK,代码页950就是繁体中文Big5。
代码页的概念比较简单,就是一个字符编码方案。
这个方案由当地的编码机构进行制定。
但要说清楚Windows的ANSI代码页,就要从Windows的区域(Locale)说起了。
微软为了适应世界上不同地区用户的文化背景和生活习惯,在Windows中设计了区域(Locale)设置的功能。
Local是指特定于某个国家或地区的一组设定,包括代码页,数字、货币、时间和日期的格式等。
在Windows内部,其实有两个Locale设置:
系统Locale和用户Locale。
系统Locale决定代码页,用户Locale决定数字、货币、时间和日期的格式。
我们可以在控制面板的“区域和语言选项”中设置系统Locale和用户Locale:
每个Locale都有一个对应的代码页。
系统Locale对应的代码页被作为Windows的默认代码页。
在没有文本编码信息时,Windows按照默认代码页的编码方案解释文本数据。
这个默认代码页通常被称作ANSI代码页(ACP)。
ANSI代码页还
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新UCS2 UCS4 中文字符编码 TTF字库之间的关系 最新 UCS2 中文 字符 编码 TTF 字库 之间 关系
![提示](https://static.bdocx.com/images/bang_tan.gif)