建议:听说GB2312字符集内码规则如下:
如果一个字节小于128,则当它为US-ASCII字符
如果一个字节大于127,则当它为字符的高位,与下一个字节组成一个汉字字符。

解决方案 »

  1.   

    BIG5与gb2312中的汉字符号都在u+4E00到u+9FFF之间
    (详见《无废话XML》--“Unicode说分明”一章)
    http://www.china-pub.com/computers/eMook/doc/download/wangluo/xml.htm
    先把String转成byte[],采用UTF-8编码方式
    String str =".....";
    byte[] b = str.getBytes("UTF-8");
    如果b中出现大于E4的码元(UTF-8是变长码,请参看UTF-8编码规则),
    表明原字串中可能有中文
    其实,因为u+4E00到u+9FFF之间的码未必全都是中文,例如日文、韩文也在这个区间
    所以,这不是个可靠的证据但如果要保证字串中全都是ASCII码就相对容易些
    实际应用时,也是经常碰到的问题
    可令:
    byte[] b = str.getBytes();
    若b.length>str.length(),表明原字串中必有非ASCII码
    再逐个检查b中有没有大于8F(十进制127)的码
    若没有,表明原字串全部由ASCII码组成