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;

    }
相关文章
相关标签/搜索