阅读的大哥大姐们,近刚开始学java语言,遇到一个问题,望解答!java字符采用Unicode字符集,汉字字符的编码是什么,或者说char c,c的范围是多少才表示汉字呢?(在一个字符串中包含数字,各种图形符号,汉字等其他国家标准字符,我该怎样提取汉字字符呢?)

解决方案 »

  1.   

    0x4e00 到 0x9fbb详细见http://oceannice.spaces.live.com/blog/cns!4DBDE991A8AB5200!183.entry
      

  2.   

     [\u4e00-\u9fa5] 
    正则表达式提取
    下面是一个判断汉字的类:
    public class IsChineseOrEnglish { /**
      * create date:2009-2-10 author:Administrator
      * 
      * @param args
      */ // GENERAL_PUNCTUATION 判断中文的“号
     // CJK_SYMBOLS_AND_PUNCTUATION 判断中文的。号
     // HALFWIDTH_AND_FULLWIDTH_FORMS 判断中文的,号
     public static boolean isChinese(char c) {  Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);  if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS  || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS  || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A  || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION  || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION  || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {   return true;  }  return false; } /**
      * 
      * create date:2009-2-10 author:Administrator
      * 判断一个字符串中是否含有汉字
      * @param strName
      */
     public static boolean isChinese(String strName) {  char[] ch = strName.toCharArray();  for (int i = 0; i < ch.length; i++) {   char c = ch[i];   if (isChinese(c) == true) {
        return true;   }  }
      return false; } public static void main(String[] args) {
      //
      // Random r = new Random();
      //
      // for (int i = 0; i < 20; i++)
      //
      // System.out.println(r.nextInt(10) + 1);  // isChinese("き");  System.out.println(isChinese('你'));
      System.out.println(isChinese("dsf--8$dsf")); }}
      

  3.   

    [Quote=引用 2 楼 shibenjie 的回复:]
    [\u4e00-\u9fa5] 
    正则表达式提取 
    下面是一个判断汉字的类: 
    public static boolean isChinese(char c) {   Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);   if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS   || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS   || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A   || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION   || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION   || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {   return true;   }   return false; } 
    这个方法看不懂 ,能不能解释一下?在网上也没有查到相关的。
      

  4.   

    汉字有多路编码方式,比如GB2312以及兼容它的GBK,UNICODE是另一种。JAVA用的就是UNICODE编码。
      

  5.   

    当然,UNICODE不只是给汉字编码,而是给全世界几乎所有的文字都做了统一的编码。