冒险解谜游戏中文网 ChinaAVG
标题:
【汉化资料】汉字字模原理
[打印本页]
作者:
shane007
时间:
2009-5-20 11:21
标题:
【汉化资料】汉字字模原理
1.ASCII字符--美国信息交换标准码 (0-127),每个字符用7位二进制数表示,字节首位为0.因此,小于80H(128)的均为ASCII符。英文26个字符用一个字节的7位二进制数足以表示。
! ^9 k: q0 C; x, R! R6 h
2.以gb2312为例,中文汉字共有约七千字,不能用一个字节表示全部的汉字,因此用两个字节来表示一个汉字,为避免与英文字符有重码,每个字节的最高位置1,作为标志位。
2 V' O ? p6 K) ^" g G. K- c. B
3.ASCII分为常用字符(可供打印的字符)与非常用字符(回车、EOF等),常用字符从33(0x21H)号到126(0x7EH)号,共94个字符,汉字就在此范围内编码,因此,中国标准编码的编码范围 :0x21H~0x7EH.两个字节可表示的汉字数为:94×94=8836.
& z V$ ^, V7 X; [
) k. I& `# `! t
以上所述编码即国际码
1 H% w( J: }+ I# `7 n4 r
+ o' q! D7 v3 r% M
4.由于每个字节的第一个位被置 1, 所以要在原编码(国际码)之上加 0x80H(10000000). 所以汉字的编码范围为 :0xA1H~0xFEH,在PC机中表现为机内码.
6 J Y5 \8 Z. C1 p0 u, C
5.区位码
u% s% \0 V5 `& f4 g8 c
在PC机中,汉字是以机内码形式存储的,每个汉字用两个字节表示,第一个字节用于表示区码,从0xA1H开始为第一区;第二字节用于表示位码,从0xA1H开始为第一位。
$ }3 b# I4 D# } Y3 z7 O+ \1 T
我们平时所说的汉字区位码,一般用十进制表示,共分94个区,每区94个汉字(位):
3 X9 \ U6 {) ]. u
: E1 n5 X" b, ^; m1 u
01-09区 特殊字符区
% X: U% k$ h) Q8 M
10-55区 一级汉字区
* B; f% J! d2 J
56-87区 二级汉字区
3 o6 e8 X$ F+ J( X: ^: J
4 L7 K9 ^4 n0 b
在汉字字库中:
% F5 H$ K. z- k9 s) \5 ]1 K3 c) j& o! `
! q l X8 l1 Y0 H9 C1 F' S
区码=机内码第一字节-0xA0H
, \1 @4 g4 y* N5 C9 _' I
位码=机内码第二字节-0xA0H
! w8 @- o/ t- W& A
6 q2 n0 D* A O5 H9 f7 c x
6.国际码 区位码 机内码 之间的关系:
# e n7 u' [5 X1 h y* q; O% j& H
0 F; T* \" L' O8 U
机内码=国际码+8080H
# A( z: C1 [) N1 j+ }
7 r& F9 y8 h d8 q$ `7 Q
区位码=机内码-0xA0H
. Z' }8 r# b# ], E
8 d! m! b' R1 n. O3 y0 Y2 w/ Q# ^
国际码=区位码+2020H
9 o! [7 z0 M+ _: E2 U, L8 j
+ d" M/ p( F+ o7 o5 h( u! f
如:“陈”的汉字区位码:1934(16进制为 1322H)
c) B% P% V- |/ _
在Linux下,用文本编辑器输入"陈",保存为test
- I4 _9 O4 Q- x7 ~
od -h test
' a& ?/ q" O4 G1 ~
显示为:
9 I* ?1 T# F( B- \+ o; W, p6 g) X
0000000 c2b3 000a
' ?$ T5 {9 e7 Z F: ^2 Q& A
0000003
5 d" N% }4 v: T: Y/ |2 q
7 A; X+ V+ }; z! X; o
区码=b3-a0=13
x" f5 g8 u( p* U, _& C
位码=c2-a0=22
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2