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);