1)用unicode码判断
对于gb2312来讲,首字节码位从0×81至0×FE,尾字节码位分别是0×40至0×FE
public boolean isGB2312(String str){
char[] chars=str.toCharArray();
boolean isGB2312=false;
for(int i=0;i<chars.length;i++){
byte[] bytes=(""+chars[i]).getBytes();
if(bytes.length==2){
int[] ints=new int[2];
ints[0]=bytes[0]& 0xff;
ints[1]=bytes[1]& 0xff;
if(ints[0]>=0x81 && ints[0]<=0xFE && ints[1]>=0x40 && ints[1]<=0xFE){
isGB2312=true;
break;
}
}
}
return isGB2312;
2)用正则表达式
- String aa = "中国China人";
- for (int i = 0; i < aa.length(); i++) {
- String bb = aa.substring(i, i+1);
- //生成一个Pattern,同时编译一个正则表达式
- boolean cc = java.util.regex.Pattern.matches("[/u4E00-/u9FA5]", bb);
- System.out.println(bb+" is chinese?-> "+cc);
- }
第2中方法更简单些
如果是判断是否为全角字符可以用
boolean cc = java.util.regex.Pattern.matches("[/uFF00-/uFFFF]", bb);