当前位置: 首页 >> 程序设计 >> 编程判断一个汉字是Big5或是GB
 

编程判断一个汉字是Big5或是GB

作者:      来源:zz     发表时间:2008-04-25     浏览次数:      字号:    

本内容摘自《汉字编码问题》一文
五、如何判断一个汉字是big5或是gb
 
 大陆电脑中的汉字多以GB2312标准进行编码,简称GB码或国标码,共定义6763汉字,编码如下:
 第一字节,行码0xA1-0xFE,第二节字,列码0xA1-0xFE,每行94个汉字。其中,1-15行(A1-AF)全角字母、符号;16-55行(B0-CF)以拼音为序的一级汉字3755字;56-87行(D0-F7)以部首为序的二级汉字3008字。例如:GB码16行1列表示“啊”字,编码为0xB0A1。
 港台电脑中的汉字则多以BIG5编码,共定义了13053汉字,汉字部分均以部首为序,编码如下:
 第一节字,行码0xA1-0xFE,第二节字,列码0x40-0x7E,0xA1-0xFE,每行157个汉字;其中,1-3/38-40行(A1-A3,C6-C8)全角字母、符号,4-39行(A4-C6)一级汉字5401字,41-89行(C9-F9)二级汉字7652字。例如:BIG5码16行121列同样表示“啊”字,编码为0xB0DA。
 GBK又称GB扩展编码或GB13000,就是这样的一个汉字编码,它是是在兼容GB码的基础上,将GB码中不存在的ISO10646.1汉字,按Unicode编码顺序进行重新编码。其编码空间包含几个子集,其中GBK/2就是GB码汉字;各子集的编码情况见下表。
 子集编码范围编码空间编码字数
 GBK/10xA1A1-0xA9FE846717
 GBK/20xB0A1-0xF7FE6,7686,763
 GBK/30x8140-0xA0FE6,0806,080
 GBK/40xAA40-0xFEA08,1608,160
 GBK/50xA840-0xA9A0192166
 EUDC/10xAAA1-0xAFFE564用户定义1
 EUDC/20xF8A1-0xFEFE658用户定义2
 EUDC/30xA140-0xA7A0672用户定义3
 
 一般是这样辨别的:
 1、GBcode的内码的两个字节都是从A0H-FEH之间的;
 2、BIGcode的内码的第一个字节是80H-FFH,第二个字节是00H-FFH;
 你要浏览全文,看看是否有第二个字节是小于7FH的汉字,如果有的话,一般是BIGcode的。当然也有特殊情况,不过非常少见的。

判断一段文字中是否含有BIG5码汉字,可用做内码的自动识别
返回True表示包含BIG5码
返回False表示不含BIG5码,这段文字一般可认为是GB码

FunctionCheckBIG(strSourceAsString)AsBoolean
Dim  idx  As   Long
Dim   Byte  Temp()  As   Byte
    CheckBIG 
=   False
    
For  idx  =   1   To   Len (strSource)
    ByteTemp
= StrConv( Mid (strSource,idx, 1 ),vbFromUnicode)
       
If   UBound (ByteTemp) > 0   Then
          
If  ByteTemp( 1 ) >= 64   And  ByteTemp( 1 ) <= 126   Then
          CheckBIG
= True
    ExitFor 
EndIf
EndIf
Next
EndFunction

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •