汉字是双字节的,字节编码是大于0x80的,循环取得汉字,如果开始的第一个字节是大于0x80,第二个字节同样是大于0x80,两个字节一个汉字.

解决方案 »

  1.   

    如 wind0513(风儿) 的观点。如果第1个字符是大于128(\x80),就是汉字的第1个字节,这个自己和后面紧跟的1个字节组成一个汉字; 这里有一篇 车东 的文章。很是不错。
    http://www.chedong.com/tech/hello_unicode.html
      

  2.   

    不同意上面的。那样的话日文,韩文,法语等等不也算中文拉。。
    比如:
    ¡ ¡ ¡ Inverted exclamation  
    ¢ ¢ ¢ Cent sign  
    £ £ £ Pound sterling  
    ¤ ¤ ¤ General currency sign  
    ¥ ¥ ¥ Yen sign  
    ¦ ¦ ¦ or &brkbar; Broken vertical bar  
    § § § Section sign  
    ¨ ¨ ¨ or ¨ Diæresis / Umlaut  
    © © © Copyright  
    ª ª ª Feminine ordinal  
    « « « Left angle quote, guillemot left  每种编码方式有一个范围的,即char在某一个范围内是中文。不过到底多少记忆模糊,需自查之!
      

  3.   

    这话我爱听,哪位大侠写段代码我看看,看了刚才车东的那篇文章,感觉编码本身就是很复杂的事。
    我想实现的功能实际是:
    String temp = "京卫食准字第[0x123]号";
    然后经过重新对汉字编码,把上面这段字符串传送到IC卡中。
    IC卡的编码格式是汉字两个字节,其他字符按一个字节存取。
      

  4.   

    我用下面的代码:
        String temp = "京卫食准字第[0x123]号";    System.out.println(temp.length());
        try {
          for (int i = 0; i < temp.length(); i++) {
            int ch = temp.charAt(i);        System.out.println("temp[" + i + "] = " + ch);
          }
        }catch(Exception e){
          e.printStackTrace();
        }
    输出的应该是temp字符串里的每个字符的asc码吧
      

  5.   

    从windows的字符映射表查了一下
    unicode 范围4E00(一) 到 9FA0(龠)的都是汉字,可以把每个char拿出来看是不是
    落在这个范围里
      

  6.   

    /**
         * 判断是否包括中文字符。
         */
        public static boolean isIncludeChinese(String s) {
            for (int i = 0; i < s.length(); i++) {
                char c = s.charAt(i);
                if (c > 255 || c < 0) {
                    return true;
                }
            }
            return false;
        }
      

  7.   

    java 是用unicode编码的,要查一下字符集
      

  8.   

    public class ChineseFont
    {
            public static boolean isChinese(char a)
            {
                    int v=(int)a;
                    return (v>=19968 && v<=171941);
            }        public static void main(String[] args)
            {
                    String str=new String("abc中d华112人e民**^$%*&()共)和ggafda,.国[]l;");
                    int cnt=0;                for(int i=0;i<str.length();i++)
                    {
                            if(isChinese(str.charAt(i)))
                                    cnt++;
                    }
                    System.out.println("共有汉字:"+cnt+" 个。");        }
    }