用delphi生成GBK 中文编码 表(4~5) GBK/4~5: 0xAA40~0xFEA0(部分) 扩充汉字 包括繁体 0xA

 

http://www.cnblogs.com/jfyes/archive/2009/09/24/1573638.html

  GBK 中文编码: (* GBK是GB2312的扩展,是向上兼容的,因此GB2312中的汉字的编码与GBK中汉字的相同。 
GBK中每个汉字仍然包含两个字节, 第一个字节的范围是0x81-0xFE(即129-254),第二个字节的范围是0x40-0xFE
(即64-254)。GBK中有码位23940个, 包含汉字21003个。
--------------------------------------
GBK/1: 0xA1A0~0xA9EF(部分) GB2312非汉字符号
GBK/2: 0xB0A0~0xF7FE(部分) GB2312汉字
上面两个是GB2312的扩展,是向上兼容的;
--------------------------------------------------------------
GBK/3: 0x8140~0xA0FE(部分) 扩充汉字 包括繁体 ----> 
GBK/4: 0xAA40~0xFEA0(部分) 扩充汉字 包括繁体
GBK/5: 0xA840~0xA995(部分) 扩充非汉字

 

  1 procedure Tfm_Words.Button5Click(Sender: TObject);
  2 var
  3   A, B: Cardinal;
  4   I, J: Integer;
  5   sHex: string;
  6   s1: WideString;
  7   ss: string;
  8 begin
  9 //GBK/5: 0xA840~0xA995(部分) 扩充非汉字
 10   ss := #13#10+
 11         '                GBK/5: $A840~$A996(部分) 扩充非汉字                '#13#10+
 12         '                                           jfyes 2008-07-07'#13#10#13#10;
 13 
 14   for  I:=  $A8 to $A9 do
 15   begin
 16 
 17      for J := $40 to $96 do
 18      begin
 19 
 20        sHex := Format('$%.2x%.2x', [I, J]);
 21        A := SysUtils.StrToIntDef(sHex, 0);
 22        
 23        if J = $40 then
 24          ss := ss+ 'code  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F ';
 25 
 26 
 27        if J in [$40, $50,$60, $70, $80,$90, $A0, $B0, $C0, $D0, $E0, $F0] then
 28          ss := ss + #13#10 + sHex+ #32;
 29 
 30        if J <> $7F then
 31          ss := ss + Char(I) + Char(J) + #32
 32        else ss := ss + #32#32#32
 33 
 34 
 35      end;
 36      ss := ss + #13#10#13#10;
 37   end;
 38 self.memo1.lines.add(ss, True);
 39 end;  
 40 
 41 执行结果如下:
 42 ------------------------------------------------------------------------------
 43                 GBK/5: $A840~$A996(部分) 扩充非汉字                
 44                               
 45 code  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 
 46 $A840 ˊ ˋ ˙ – ― ‥ ‵ ℅ ℉ ↖ ↗ ↘ ↙ ∕ ∟ ∣ 
 47 $A850 ≒ ≦ ≧ ⊿ ═ ║ ╒ ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ 
 48 $A860 ╜ ╝ ╞ ╟ ╠ ╡ ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫ 
 49 $A870 ╬ ╭ ╮ ╯ ╰ ╱ ╲ ╳ ▁ ▂ ▃ ▄ ▅ ▆ ▇    
 50 $A880 █ ▉ ▊ ▋ ▌ ▍ ▎ ▏ ▓ ▔ ▕ ▼ ▽ ◢ ◣ ◤ 
 51 $A890 ◥ ☉ ⊕ 〒 〝 〞  
 52 
 53 code  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 
 54 $A940 〡 〢 〣 〤 〥 〦 〧 〨 〩 ㊣ ㎎ ㎏ ㎜ ㎝ ㎞ ㎡ 
 55 $A950 ㏄ ㏎ ㏑ ㏒ ㏕ ︰ ¬ ¦  ℡ ㈱  ‐    
 56 $A960 ー ゛ ゜ ヽ ヾ 〆 ゝ ゞ ﹉ ﹊ ﹋ ﹌ ﹍ ﹎ ﹏ ﹐ 
 57 $A970 ﹑ ﹒ ﹔ ﹕ ﹖ ﹗ ﹙ ﹚ ﹛ ﹜ ﹝ ﹞ ﹟ ﹠ ﹡    
 58 $A980 ﹢ ﹣ ﹤ ﹥ ﹦ ﹨ ﹩ ﹪ ﹫        
 59 $A990       〇 
 60 
 61 
 62 
 63 procedure Tfm_Words.Button4Click(Sender: TObject);
 64 var
 65   A, B: Cardinal;
 66   I, J: Integer;
 67   sHex: string;
 68   s1: WideString;
 69   ss: string;
 70 begin   //GBK/4: 0xAA40~0xFEA0(部分) 扩充汉字 包括繁体
 71   ss := #13#10+
 72         '                GBK/4: $AA40~$FEA0(部分) 扩充汉字全表                '#13#10+
 73         '                                           jfyes 2008-07-07'#13#10#13#10;
 74 
 75   for  I:=  $AA to $FE do
 76   begin
 77 
 78      for J := $40 to $A0 do
 79      begin
 80 
 81        sHex := Format('$%.2x%.2x', [I, J]);
 82        A := SysUtils.StrToIntDef(sHex, 0);
 83        
 84        if J = $40 then
 85          ss := ss+ 'code  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F ';
 86 
 87 
 88        if J in [$40, $50,$60, $70, $80,$90, $A0, $B0, $C0, $D0, $E0, $F0] then
 89          ss := ss + #13#10 + sHex+ #32;
 90 
 91        if J <> $7F then
 92          ss := ss + Char(I) + Char(J) + #32
 93        else ss := ss + #32#32#32
 94 
 95 
 96      end;
 97      ss := ss + #13#10#13#10;
 98   end;
 99 
100 self.memo1.lines.add(ss, True);
101 end;
102 执行结果如下:
103 ------------------------------------------------------------
104 
105                 GBK/4: $AA40~$FEA0(部分) 扩充汉字全表  

 

posted @ 2024-03-01 08:26  jfyes  阅读(45)  评论(0编辑  收藏  举报