前言
字符编码对于初学java遇到的不是那么多,但是之后学框架和做项目的时候就会遇到编码不统一的情况,所以对字符编码还是要有一定的理解。(要了解UTF-8、ASCII、GBK、Unicode)
Java语言对文本字符采用Unicode编码。由于计算机内存只能存取二进制数据,因此必须为各个字符进行编码。
例如:a --编码–> 0000 0000 0110 0001
常见编码
- ASCII
ASCII–Amecian Standard Code for Information Interchange,美国信息交换标准代码。主用于表达现代英语和其他西欧语言中的字符。它是现今最通用的单字节编码系统,它只用一个字节的7位,一共表示128个字符。
- ISO-8859-1
又称为Latin-1, 是国际标准化组织(ISO)为西欧语言中的字符制定的编码,用一个字节(8位)来为字符编码,与ASCII字符编码兼容。所谓兼容,是指对于相同的字符,它的ASCII字符编码和ISO-8859-1字符编码相同。
- GB2312
包括对简体中文字符的编码,一共收录了7445个字符(6763个汉字+682个其他字符). 它与ASCII字符编码兼容。
- GBK
对GB2312字符编码的扩展,收录了21886个字符(21003个字符+其它字符), 它与GB2312字符编码兼容。
- Unicode
由国际Unicode协会编制,收录了全世界所有语言文字中的字符,是一种跨平台的字符编码。
Unicode具有两种编码方案:
-
用2个字节(16位)编码,被称为UCS-2, Java语言采用;
-
用4个字节(32位)编码,被称为UCS-4;
UCS(Universal Character Set)是指采用Unicode字符编码的通用字符集。
- UTF
有些操作系统不完全支持16位或32位的Unicode编码,UTF(UCS Transformation Format)字符编码能够把Unicode编码转换为操作系统支持的编码,常见的UTF字符编码包括UTF-8、UTF-16、UTF-32。
-
UTF-8,使用一至四个字节为每个字符编码,其中大部分汉字采用三个字节编码,少量不常用汉字采用四个字节编码。因为 UTF-8 是可变长度的编码方式,相对于 Unicode 编码可以减少存储占用的空间,所以被广泛使用。
-
UTF-16,使用二或四个字节为每个字符编码,其中大部分汉字采用两个字节编码,少量不常用汉字采用四个字节编码。
- UTF-32,使用四个字节为每个字符编码,使得 UTF-32 占用空间通常会是其它编码的二到四倍。