java中我不知道,不过我用过一种字符编码,转换后中文是两字节,英文是单字节,好象中都是%**格式,英文保持不便,有明显的区别,你可以从者方面考虑实现,我也不大懂,呵呵!!

解决方案 »

  1.   

    把 java 字串中的字串 getBytes("GBK"),然后判别两个字节的最高位是不是都为 1,如果是的话,很可能是中文。
    或者判别那个 char 的范围,看看是不是在中文 Unicode 编码的范围之内。
      

  2.   

    String sentence="汉字字串";                 //输入
    byte[] temp=sentence.getBytes("ISO8859-1");//转变成Unicode编码
    boolean hanzi=false;                       //判断是否是汉字 
    int i,Slength=0;     for(i=0;i<temp.length;i++)
           if(temp[i]<0)
           { hanzi=true;
              i=temp.length
           }    if (hanzi)
           System.out.pringln("遇到汉字");
        else
           System.out.println("没有汉字");请大家指点
      

  3.   

    上面的原理是利用汉字(双字节)的高字节最高比特位是1,故转变成byte后会小于0。
      

  4.   

    to dreamhorse:双字节的高字节为什么是1呢?
      

  5.   

    在源程序里面的汉字的判别,这取决于你编译的 encoding 方式。dreamhorse(江南) 的方法,在如下的编译方式时是正确的:
    javac -encoding ISO8859-1 YourClass.java但一般中文 JDK 环境下缺省的编译方式是 GBK,也就是如果你编译时没有加参数 encoding 的时候,上面的方法是得不到正确的结果的。
    此时的
    javac YourClass.java
    相当于
    javac -encoding GBK YourClass.java