📄 gb.txt
字号:
我们开发ASP的程序员,经常遇到客户有开发繁体网站的需要,但是建设两个网站一个是麻烦,第二个是客户不愿意更新不便,所以要求能自动GB2312和BIG5转化的ASP函数,如果您需要请联系我。
简体转换成繁体的测试网址
http://www.abkk.com/cn/online_tools/gb2312_1.asp
繁体转换成简体的测试网址
http://www.abkk.com/cn/online_tools/big5_1.asp
---------------------------------------------------------------
其实用不到库的,可以进行内码转换
GB码和BIG5码的互换技术
中文与英文用ASCII码一个字节表示不同,它使用两个字节来表示。事实上,在文本文件中保存的就是每个汉字对应的两个字节编码,而显示问题由中文操作系统自动解决。
汉字编码并不统一,我们使用的是GB码,而台湾地区使用的是BIG5码。BIG5码文件中保存的是汉字相应的BIG5编码,GB码文件中保存的是汉字相应的GB编码。所以转换工作的关键是有一个记录每个BIG5编码对应GB编码的码表文件。
GB码编码规则是这样的:每个汉字由两个字节构成,第一个字节的范围从0XA1-0XFE,共96种。第二个字节的范围分别为0XA1-0XFE,共96种。利用这两个字节共可定义出 96 * 96=8836种汉字。实际共有6763个汉字。
BIG5码编码规则是这样的:每个汉字由两个字节构成,第一个字节的范围从0X81-0XFE,共126种。第二个字节的范围分别为0X40-0X7E,0XA1-0XFE,共157种。也就是说,利用这两个字节共可定义出 126 * 157=19782种汉字。这些汉字的一部分是我们常用到的,如一、丁,这些字我们称为常用字,其BIG5码的范围为0XA440-0XC671,共5401个。较不常用的字,如滥、调,我们称为次常用字,范围为 0XC940-0XF9FE,共7652个,剩下的便是一些特殊字符。
制作码表文件的原理是这样的:首先将所有的GB编码写入一个文件,然后,使用具有GB码到BIG5码转换功能的软件,如UCDOS下的CONVERT.EXE,将文件转换为BIG5码文件,即得到码表文件。
下面的程序可将全部国标码写入文件gb.txt(以下全部程序用foxpro书写,可很容易的转换成其他语言)
fp = fopen("gb.txt",2)
for i=161 to 247
for j=161 to 254
=fwrite(fp,chr(i)+chr(j))
next
=fwrite(fp,chr(13)+chr(10))
next
=fwrite(fp,chr(26))
=fclose(fp)
文件的组织形式:行对应编码的第一字节,列对应编码的第二字节。使用时请注意编码的偏移量,如汉字“啊”GB编码0xb1a1第一字节0xb1(177)第二字节0xa1(161)所以他应该在文件的第(177-161=16)行第((161-161)*2=0)列。
运行CONVERT.EXE将gb.txt转换成BIG5码的文件,这样就可得到按GB码组织的BIG5码表文件big5.txt。反之亦可得到按BIG5码组织的GB码表文件。
转换的思路是这样的:(用foxpro书写)
首先将码表文件装入数组
fp = fopen("big5.txt")
i = 0
do while feof(fp)
i = i+1
dime dict[i]
dict[i] = fgets(fp)
enddo
=fclose(fp)
其次将待转换的文本装入变量
create cursor temp (mm m)
append blank
append memo mm from textfilename
text = mm
然后扫描文本,替换所有的GB编码
temp = ""
i = 1
do while i < len(text)
ch = substr(text,i,1)
if isascii(ch) && 若是ASCII码
temp = temp+ch
i = i+1
else
ch1 = substr(text,i+1,1)
big5 = substr(dict[asc(ch)-161+1],(asc(ch1)-161)*2+1,2)
temp = temp+big5
i = i+2
endif
enddo
最后将在temp中得到转换后的文本
需要注意的是,在foxpro中数组指针是以1开始,substr函数的起始位>=1。
foxpro大家应该都会,看得懂的。
多谢各位,问题已经基本
1、复KELAN兄:是我没查清楚,确实是有字库集成的LCD
但是目前我的LCD已经确定好了,而且价格比较低廉,
所以我想另外配片FLASH作字库用
2、总算找到BIG5码的编码结构了,特地贴上来
供各位兄弟门共享
大五码(Big5)
如不去考虑特殊符号,及后来的七个扩充字,TW-BIG5 的排序方式如下。将所有的字分成两大群:常用字区与次常用字区,每一个字区分别用笔画来排序,同一个笔画的字,依部首来排。TW-BIG5 每个字由两个字节组成,其第一字节编码范围为0xA1~0xF9,第二字节编码范围为0x40~0x7E与0xA1~0xFE,总计收入13868个字 (包括5401个常用字、7652 个次常用字、7个扩充字、以及808个各式符号),其中可以大致划分为以下几个字区:
第一字节 第二字节 字区 制定
A1..A2 40..7E, A1..FE 各种符号区 1984
A3 40..7E, A1..BF 各种符号区 (包括标点符号、ASCII 全角符号、注音符号等) 1984
A3 E1 欧元符号 CP950
A4..C5 40..7E, A1..FE 常用字区 1984
C6 40..7E 常用字区 1984
C6 A1..FE 罕用符号区 倚天
C7 40..7E, A1..FE 罕用符号区 (包括日文、俄文等) 倚天
C8 40..7E, A1..D3 罕用符号区 (包括俄文、输入法特殊符号等) 倚天
C9..F8 40..7E, A1..FE 次常用字区 1984
F9 40..7E, A1..D5 次常用字区 1984
F9 D6..DC 七个扩充字 倚天
F9 DD..FE 表格符号区 倚天
Table 1. BIG5字区与编码范围
扩充字 BIG5 码 Unicode 码 BIG5_1984 的同义字
碁 0xF9D6 0x88CF 棋
锈 0xF9D7 0x92B9 锈
里 0xF9D8 0x7CA7 里
墙 0xF9D9 0x58BB 墙
恒 0xF9DA 0x6052 恒
妆 0xF9DB 0x7881 妆
娴 0xF9DC 0x5AFA 娴
Table 2. 七个扩充字
编码 第一个字节 第二个字节 第三个字节 第四个字节
GB2312 0xB0 - 0xF7 0xA0 - 0xFE
GBK 0x81 - 0xFE 0x40 - 0xFE
GB18030 的双字节 0x81 - 0xFE 0x40 - 0x7E, 0x80 - 0xFE
GB18030 的四字节 0x81 - 0xFE 0x30 - 0x39 0x81 - 0xFE 0x30 - 0x39
Table 3. GB 的汉字编码规则
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -