一般情况下,字符是比较方便人类理解的信息表达形式,而计算机能理解的信息为二进制数字,为了方便计算机的计算和信息的传输,产生字符编码的概念。
编码:将人类能理解的信息以约定的规则转换为另外一种人类不能直接理解的数据表示
解码:按与编码规则相反的操作将人类不能直接理解的数据表示转换为人类能直接理解的信息
Java语言采用国际通用编码集utf-8作为默认编码集,utf-8用3个字节来存储汉字。通过以下代码可以验证该结论。
import java.nio.charset.Charset;
public class Main {
public static void main(String args[]) {
//Java使用的默认字符集
System.out.println("java 默认字符集:");
System.out.println(Charset.defaultCharset()+"\n");
//汉字“测”的字节编码
String str = "测";
//这里可以手动设置编码字符集,默认使用utf-8编码
byte[] bytes = str.getBytes();
System.out.println("汉字\"测\"的编码:");
for(byte bt: bytes){
System.out.println(bt);
}
}
}
代码第一段调用Charset.defaultCharset()方法输出Java的默认字符集,如下图
代码第二段测试了汉字“测”的字节编码,共占用3个字节,如图
注意到此处一个字节的编码范围为(-2**7)~ (2**7-1),其中**表示乘方。