`
soul_fly
  • 浏览: 39504 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

判断给定中文字符所属字符集的方法

阅读更多

常见的中文字符集有:GB2312字符集、GBK 字符集、BIG5字符集、 GB 18030字符集。其中GB2312字符集、GBK 字符集、BIG5字符集都是采用两个字节表示一个汉字。下面的程序中h表示字符的高字节位、l表示字符的低字节位,十六进制数值表示的是各种字符编码集的边界。

 

    public static boolean isGB2312(byte h, byte l){   
        int ih = h & 0xff;   
        int il = l & 0xff;   
        return ((ih>=0xa1 && ih<=0xf7 &&    
                 il>=0xa1 && il<=0xfe) ? true : false);   
    }   
  
    public static boolean isGBK(byte h, byte l){   
        int ih = h & 0xff;   
        int il = l & 0xff;   
        return ((ih>=0x81 && ih<=0xfe &&    
                (il>=0x40 && il<=0x7e ||    
                 il>=0x80 && il<=0xfe )) ? true : false);   
    }   

    public static boolean isBIG5(byte h, byte l){   
        int ih = h & 0xff;   
        int il = l & 0xff;   
        return ((ih>=0xa1 && ih<=0xf9 &&    
                (il>=0x40 && il<=0x7e ||    
                 il>=0xa1 && il<=0xfe )) ? true : false);   
    }   

 

这个方法已经用到了Yard中文分词系统中进行字符集的判断,同时如果你读过mysql的源码你会发现mysql里对字符集的判断也是采用这种方法。

 

1
0
分享到:
评论
3 楼 vb2005xu 2009-06-30  
那如果我要判断 "我" 这个字符串是什么编码的,怎么写?? 照你这个意思我必须得转了??
我怎么转,还有对 "我们有的撒旦法" 这种纵不能是一个一个的来判断吧..

2 楼 soul_fly 2009-06-29  
vb2005xu 写道
你这个都没有注释么? 那两个参数分别传什么值啊? 不明不白的 也不给个demo , 你裂解么?

请仔细看内容。h表示字符的高字节位、l表示字符的低字节位。
1 楼 vb2005xu 2009-06-29  
你这个都没有注释么? 那两个参数分别传什么值啊? 不明不白的 也不给个demo , 你裂解么?

相关推荐

Global site tag (gtag.js) - Google Analytics