冒险解谜游戏中文网 ChinaAVG

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

作者: shane007    时间: 2009-5-20 11:21
标题: 【汉化资料】汉字字模原理
1.ASCII字符--美国信息交换标准码 (0-127),每个字符用7位二进制数表示,字节首位为0.因此,小于80H(128)的均为ASCII符。英文26个字符用一个字节的7位二进制数足以表示。1 M7 F$ V/ q( r2 {8 |
    2.以gb2312为例,中文汉字共有约七千字,不能用一个字节表示全部的汉字,因此用两个字节来表示一个汉字,为避免与英文字符有重码,每个字节的最高位置1,作为标志位。( t1 g7 e& J  z) h! l
    3.ASCII分为常用字符(可供打印的字符)与非常用字符(回车、EOF等),常用字符从33(0x21H)号到126(0x7EH)号,共94个字符,汉字就在此范围内编码,因此,中国标准编码的编码范围 :0x21H~0x7EH.两个字节可表示的汉字数为:94×94=8836.  m( h* w8 I& e& |0 Y0 @' b5 F
: t3 s0 C( Z$ q$ E
    以上所述编码即国际码
7 `" Y' ], ^( Z& {; _4 v
* |, z8 H6 T6 r0 L    4.由于每个字节的第一个位被置 1, 所以要在原编码(国际码)之上加 0x80H(10000000). 所以汉字的编码范围为 :0xA1H~0xFEH,在PC机中表现为机内码.3 F) }8 V3 H! x- t
    5.区位码0 p) T& ?2 d8 O2 J
    在PC机中,汉字是以机内码形式存储的,每个汉字用两个字节表示,第一个字节用于表示区码,从0xA1H开始为第一区;第二字节用于表示位码,从0xA1H开始为第一位。
! j0 T9 l# R1 e& r$ J0 ~# I/ ^    我们平时所说的汉字区位码,一般用十进制表示,共分94个区,每区94个汉字(位):; x8 M) G0 P1 ?  y3 _

" p% C0 c  R5 @3 k6 u    01-09区        特殊字符区
% I9 ?$ F7 v! ~- l, x# L/ q. F% a    10-55区        一级汉字区4 Q- l; ?8 x9 Z% a; p
    56-87区        二级汉字区4 U2 `8 p1 h& u: j( H6 i- f6 @5 C
    ( Z+ p7 W% i9 q9 d
    在汉字字库中:
  O6 d2 K! S$ y8 X( I6 ^! K
1 \% x5 i& U% s( [* _    区码=机内码第一字节-0xA0H
7 S, ]+ g9 @/ v+ B    位码=机内码第二字节-0xA0H
' s% s  @7 n* O% P6 w9 J# W9 x( ]
9 a5 @( I5 J- B" T    6.国际码 区位码 机内码 之间的关系:
% \3 g& k9 w: m, Q0 m# k% ~) _* U& ?* _' O( j
    机内码=国际码+8080H
% y: e  J4 F6 i: [+ _, r7 y1 q3 b6 Q  B$ }  j
    区位码=机内码-0xA0H
5 y0 e- U& S& V0 E' ~1 e# ^
, I- F7 [0 H, Y, g    国际码=区位码+2020H
$ B+ h' L8 Z( y2 F) t/ d8 y/ L$ \& Z9 |
    如:“陈”的汉字区位码:1934(16进制为 1322H)
: h8 N1 U% l' @! O9 {1 w    在Linux下,用文本编辑器输入"陈",保存为test
9 B  Q! D- l, P, e% l    od -h test
- c# A3 u+ @- a. T5 n- r. z( k    显示为:* y2 b5 o# @$ D: E% C- F
    0000000 c2b3 000a6 u! x/ r5 x- b
    0000003# B1 N. C' F' C1 J
   
# G* w, e: e7 m: T! H9 l0 w! o- d' i    区码=b3-a0=13
# K6 @( V4 w$ M* T. W6 n2 C    位码=c2-a0=22




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