一个100M的GBK文件,随意跳到任意一个字节,如何判断该字节是否是某双字节字符的后半个字符呢,如果有对常用字符概率高的判断算法也行。

解决方案 »

  1.   


    int cp = str.codePointAt(i);
    Character.isSupplementaryCodePoint(cp);//确定指定字符(Unicode 代码点)是否在增补字符范围内。
      

  2.   


    try {
    byte[] temp="汉A1字".getBytes("GBK");
    System.out.println("字节长度:"+temp.length+",字节与1000 0000(0X80)位与操作, 如果是0X80,就是汉字的半个字节,如果是0X00,就是ASCII");

    for (int i=0;i<temp.length;i++){
    byte b=temp[i];
    System.out.println(i+"\t0x"+Integer.toHexString(b&0x80));
    }
    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }