Java 中一箇中文所佔字節

最近作項目要求一個表單字段的限制是(3~20個英文(2~6箇中文)),以前老是覺得一箇中文佔兩個字節,用「字符串」.getByte() 獲取長度而後判斷,經調試老是出錯,後來發現utf-8下一個漢字是佔3個字節的,而gb2312下是佔兩個字節的,因此轉換了一下,完美驗證。java

 public static final boolean checkUserName(String name) {

//     char [] charArr = name.toCharArray();

       int a = 0;

       try {

             a = name.getBytes("gb2312").length;

       } catch (UnsupportedEncodingException e) {

             e.printStackTrace();

      }

        if (a > 2 && name.getBytes().length < 21) {

         Pattern pattern = Pattern.compile("^[a-zA-Z\\u4e00-\\u9fa5][\\u4e00-\\u9fa5\\w\\.-]*$");

            Matcher matcher = pattern.matcher(name);

            if (!matcher.find())

            {

                return false;

            }

            return true;

        }

        return false;

    }
相關文章
相關標籤/搜索