vfp生成GBK中的所有汉字

来源:互联网 发布:迪尔s440收割机数数据 编辑:程序博客网 时间:2024/04/30 15:09

*!*    二、码位分配及顺序

*!*    GBK 亦采用双字节表示,总体编码范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 xx7F 一条线。总计 23940 个码位,共收入 21886 个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号 883 个。

*!*    全部编码分为三大部分:

*!*    1. 汉字区。包括:

*!*    a. GB 2312 汉字区。即 GBK/2: B0A1-F7FE。收录 GB 2312 汉字 6763 个,按原顺序排列。

*!*    b. GB 13000.1 扩充汉字区。包括:

*!*    (1) GBK/3: 8140-A0FE。收录 GB 13000.1 中的 CJK 汉字 6080 个。

*!*    (2) GBK/4: AA40-FEA0。收录 CJK 汉字和增补的汉字 8160 个。CJK 汉字在前,按 UCS 代码大小排列;增补的汉字(包括部首和构件)在后,按《康熙字典》的页码/字位排列。

*!*    2. 图形符号区。包括:

*!*    a. GB 2312 非汉字符号区。即 GBK/1: A1A1-A9FE。其中除 GB 2312 的符号外,还有 10 个小写罗马数字和 GB 12345 增补的符号。计符号 717 个。

*!*    b. GB 13000.1 扩充非汉字区。即 GBK/5: A840-A9A0BIG-5 非汉字符号、结构符和“○”排列在此区。计符号 166 个。

*!*    3. 用户自定义区:分为(1)(2)(3)三个小区。

*!*    (1) AAA1-AFFE,码位 564 个。

*!*    (2) F8A1-FEFE,码位 658 个。

*!*    (3) A140-A7A0,码位 672 个。

*!*    第(3)区尽管对用户开放,但限制使用,因为不排除未来在此区域增补新字符的可能性。

create table gbk(字符 c(2))

local lcString,x,y

*    (1)汉字21003

*    GBK/2OXBOA1-F7FE, 收录 GB2312 汉字 6763 个,按原序排列(其中有5个空位是D7FA-D7FE)

for x = 0xB0 to 0xF7

     for y = 0xA1 to 0xFE

         lcString = chr[x] + chr[y]

         if y <> 0x7F and not (x = 0xD7 and (y >=0xFA and y <=0xFE))

              append blank

              replace 字符 with lcString

         endif

     endfor

endfor

*    GBK/3OX8140-AOFE,收录 CJK 汉字 6080 个;

for x = 0x81 to 0xA0

     for y = 0x40 to 0xFE

         lcString = chr[x] + chr[y]

         if y <> 0x7F

              append blank

              replace 字符 with lcString

         endif

     endfor

endfor

*    GBK/4OXAA40-FEAO,收录 CJK 汉字和增补的汉字 8160 个。

for x = 0xAA to 0xFE

     for y = 0x40 to 0xA0

         lcString = chr[x] + chr[y]

         if y <> 0x7F

              append blank

              replace 字符 with lcString

         endif

     endfor

endfor

*    (2)非汉字(图形)883

*    GBK/1OXA1A1-A9FE,除 GB2312 的符号外,还增补了其它符号(图形符号区)

*!*  for x = 0xA1 to 0xA9

*!*      for y = 0xA1 to 0xFE

*!*           lcString = chr[x] + chr[y]

*!*           if y <> 0x7F

*!*                append blank

*!*                replace 字符 with lcString

*!*           endif

*!*      endfor

*!*  endfor

*    GBK/5OXA840-A9AO,扩除非汉字区。(图形符号区)

*!*  for x = 0xA8 to 0xA9

*!*      for y = 0x40 to 0xA0

*!*           lcString = chr[x] + chr[y]

*!*           if y <> 0x7F

*!*                append blank

*!*                replace 字符 with lcString

*!*           endif

*!*      endfor

*!*  endfor

*!*  browse