冒险解谜游戏中文网 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# ], E8 d! m! b' R1 n. O3 y0 Y2 w/ Q# ^
    国际码=区位码+2020H9 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