最近在刷Java程序员面试笔试宝典,看到这段东西,想保留下来,供自己查阅。
在JAVA中默认使用的Unicode编码方式,一个中文字符占两个字节,一个英文字符占一个字符,一个数字占一个字符,一个字符等于两个字节。
public class Test {
public static void findChinese(String s) {
if (s.getBytes().length != s.length()) {
System.out.println("字符串中包含中文");
String regEX = "[\\u4e00-\\u9fa5]";
Pattern pattern = Pattern.compile(regEX);
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group(0) + "");
}
} else {
System.out.println("字符串中不包含中文");
}
}
public static void main(String[] args) {
findChinese("mibns2222你好");
}
}
但是我的电脑输出得中文是三个字节,经过查找发现是UTF-8编码得原因,UTF-8编码如下所示,其实大部分汉字还是占用四个字节得。
1.占2个字节的:〇
(〇有两个读音 xīng líng(一) xīng 同“星”。唐武则天所造字,(二) líng 同“零”。)
2.占3个字节的:基本等同于GBK,含21000多个汉字
3.占4个字节的:中日韩超大字符集里面的汉字,有5万多个
4.一个utf8数字占1个字节
具体详情可参考:https://blog.csdn.net/qq_29232943/article/details/62235608