冒险解谜游戏中文网 ChinaAVG

标题: 【汉化资料】汉字字模原理 [打印本页]

作者: shane007    时间: 2009-5-20 11:21
标题: 【汉化资料】汉字字模原理
1.ASCII字符--美国信息交换标准码 (0-127),每个字符用7位二进制数表示,字节首位为0.因此,小于80H(128)的均为ASCII符。英文26个字符用一个字节的7位二进制数足以表示。
$ A* g3 B- z/ Q6 |) N, h) U+ p    2.以gb2312为例,中文汉字共有约七千字,不能用一个字节表示全部的汉字,因此用两个字节来表示一个汉字,为避免与英文字符有重码,每个字节的最高位置1,作为标志位。
' X" @* B6 \* i0 O    3.ASCII分为常用字符(可供打印的字符)与非常用字符(回车、EOF等),常用字符从33(0x21H)号到126(0x7EH)号,共94个字符,汉字就在此范围内编码,因此,中国标准编码的编码范围 :0x21H~0x7EH.两个字节可表示的汉字数为:94×94=8836.6 x4 R2 L" q5 V# g

0 Y% m2 C3 p( D% K5 `9 Z    以上所述编码即国际码
# I$ S: ~; o+ t# `% _1 ^, o3 X5 a( K6 Z% z( z- r5 O) G
    4.由于每个字节的第一个位被置 1, 所以要在原编码(国际码)之上加 0x80H(10000000). 所以汉字的编码范围为 :0xA1H~0xFEH,在PC机中表现为机内码.$ x+ l) ^% p+ m, ~/ L1 a
    5.区位码4 `( K3 O4 Y' U3 k2 `
    在PC机中,汉字是以机内码形式存储的,每个汉字用两个字节表示,第一个字节用于表示区码,从0xA1H开始为第一区;第二字节用于表示位码,从0xA1H开始为第一位。1 b* S6 E1 e# v. J% `  ~2 d4 G
    我们平时所说的汉字区位码,一般用十进制表示,共分94个区,每区94个汉字(位):
1 i3 t$ W6 h! L1 I1 X+ u: B( Z
  m; x) u. V8 ^6 n0 K    01-09区        特殊字符区' }9 E( R! g3 L0 s$ c, q
    10-55区        一级汉字区/ `7 ~9 k% @  p7 A  N9 }, s
    56-87区        二级汉字区
8 J5 `8 z% h, U  d4 C% \/ g   
& W, X4 L" p, o( b5 h; _& ~% t    在汉字字库中:
0 d& D/ ~/ `- }  J: H
+ Z, O8 `! m  _1 s$ u9 D    区码=机内码第一字节-0xA0H* B' T) e. N6 `. i9 @
    位码=机内码第二字节-0xA0H3 ^+ Q% c- e+ i/ v5 [
. N  ~& `6 g3 ~( U; o* T9 j
    6.国际码 区位码 机内码 之间的关系:
4 z2 T  w7 g; c6 b# z7 X1 A3 W$ p6 {4 n- U. F  i. n; d6 k# K+ _) ?
    机内码=国际码+8080H
/ n$ @; i5 F- g9 C9 j+ X$ X6 r9 L1 i% T
    区位码=机内码-0xA0H
. m+ T6 r0 h# h4 ~5 I) [! _
  v5 s5 R3 f& ^- ^1 R! d    国际码=区位码+2020H- V/ ]4 W, v# P+ o- R5 ^
0 |0 F! P) z* c, ~% z4 Q
    如:“陈”的汉字区位码:1934(16进制为 1322H), Y6 }- M9 p9 J& q- N/ e
    在Linux下,用文本编辑器输入"陈",保存为test1 }) Y+ ]3 L& V5 S( a* z
    od -h test
! U& R7 b) U2 ~' L    显示为:
$ D; {- W& Y* y' @    0000000 c2b3 000a
% h3 s" Y0 x& f% ]; j, Q- d& g    0000003
5 e  u8 D$ [8 _# Y4 w, p   
) [* Q5 z  p* a! l- B+ u    区码=b3-a0=13
) A: @+ q7 {3 C! b% Y    位码=c2-a0=22




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2