英文字母:A

字节数:1; 编码:GB2312
字节数:1; 编码:GBK
字节数:1; 编码:GB18030
字节数:1; 编码:ISO-8859-1
字节数:1; 编码:UTF-8
字节数:4; 编码:UTF-16
字节数:2; 编码:UTF-16BE
字节数:2; 编码:UTF-16LE

中文汉字:人

字节数:2; 编码:GB2312
字节数:2; 编码:GBK
字节数:2; 编码:GB18030
字节数:1; 编码:ISO-8859-1
字节数:3; 编码:UTF-8
字节数:4; 编码:UTF-16
字节数:2; 编码:UTF-16BE
字节数:2; 编码:UTF-16LE

java中如果判断字符 可用   getBytes("GBK").length 来判断

1 public class CutString {   
 2   
 3     /**  
 4      * 判断是否是一个中文汉字  
 5      *   
 6      * @param c  
 7      *            字符  
 8      * @return true表示是中文汉字,false表示是英文字母  
 9      * @throws UnsupportedEncodingException  
10      *             使用了JAVA不支持的编码格式  
11      */  
12     public static boolean isChineseChar(char c)   
13             throws UnsupportedEncodingException {   
14         // 如果字节数大于1,是汉字   
15         // 以这种方式区别英文字母和中文汉字并不是十分严谨,但在这个题目中,这样判断已经足够了   
16         return String.valueOf(c).getBytes("GBK").length > 1;   
17     }   
18   
19     /**  
20      * 按字节截取字符串  
21      *   
22      * @param orignal  
23      *            原始字符串  
24      * @param count  
25      *            截取位数  
26      * @return 截取后的字符串  
27      * @throws UnsupportedEncodingException  
28      *             使用了JAVA不支持的编码格式  
29      */  
30     public static String substring(String orignal, int count)   
31             throws UnsupportedEncodingException {   
32         // 原始字符不为null,也不是空字符串   
33         if (orignal != null && !"".equals(orignal)) {   
34             // 将原始字符串转换为GBK编码格式   
35             orignal = new String(orignal.getBytes(), "GBK");   
36             // 要截取的字节数大于0,且小于原始字符串的字节数   
37             if (count > 0 && count < orignal.getBytes("GBK").length) {   
38                 StringBuffer buff = new StringBuffer();   
39                 char c;   
40                 for (int i = 0; i < count; i++) {   
41                     c = orignal.charAt(i);   
42                     buff.append(c);   
43                     if (CutString.isChineseChar(c)) {   
44                         // 遇到中文汉字,截取字节总数减1   
45                         --count;   
46                     }   
47                 }   
48                 return buff.toString();   
49             }   
50         }   
51         return orignal;   
52     }   
53   
54     public static void main(String[] args) {   
55         // 原始字符串   
56         String s = "我ZWR爱JAVA";   
57         System.out.println("原始字符串:" + s);   
58         try {   
59             System.out.println("截取前1位:" + CutString.substring(s, 1));   
60             System.out.println("截取前2位:" + CutString.substring(s, 2));   
61             System.out.println("截取前4位:" + CutString.substring(s, 4));   
62             System.out.println("截取前6位:" + CutString.substring(s, 6));   
63         } catch (UnsupportedEncodingException e) {   
64             e.printStackTrace();   
65         }   
66     }   
67 }