常见字符集介绍:
美国人:
英文字母(大小写)数字、标点符号、特殊字符。
标准字符集:
ASCII码:
标准ASCII字符集:
ASCII:美国信息交换标准代码,包括了英文、符号等。
标准ASCII使用1个字节存储一个字符,首位是0,总共表示128个字符,对美国人老说完全够用。
中国人自己的字符集:
GBK(汉字内码扩展规范, 国标)
汉字编码字符集,包含了2万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式存储。
注意:GBK兼容了ASCII字符集。
各个国家如果有各个国家的编码:
Unicode字符集(统一码,也叫万国码)。
Unicode是国际组织制定的,可以容纳世界上所有文字、符号的字符集。
UTF-32: 用4个字节表示一个字符。有容乃大。
这种方案太过于奢侈。占用存储空间,通信效率变低。
UTF-8:
是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节、2个字节、3个字节、4个字节。
英文字符、数字等只占一个字节(兼容标准ASCII编码),汉字字符占用3个字节。
注意:技术人员在开发时都应该使用UTF-8进行编码。
在IDE中,就是使用的UTF-8进行编码。
注意:
字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码。
英文和数字一般不会乱码,因为很多字符集都兼容了ASCII编码。
字符集的编码和解码操作:
编码:把字符按照指定字符集编码成字节;
解码:把字节按照指定字符集解码成字符。
package cn.chang.d3_charset;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class CharsetTest1 {
public static void main(String[] args) throws UnsupportedEncodingException {
// 1. 编码
String Data = "a我b";
byte[] bytes = Data.getBytes(); // 默认是按照平台字符集(UTF-8)进行编码的。
System.out.println(Arrays.toString(bytes)); // [97, -26, -120, -111, 98]
// 按照指定字符集进行编码。
byte[] bytes1 = Data.getBytes("GBK"); // 使用GBK进行编码
System.out.println(Arrays.toString(bytes1)); // [97, -50, -46, 98]
// 2. 解码
String s1 = new String(bytes); // 按照平台默认编码UTF-8解码
System.out.println(s1);
// 3. 解码2
String s2 = new String(bytes1, "GBK"); // 使用GBK进行解码
System.out.println(s2);
}
}
编码使用字符集,解码也就应该使用什么字符集。
标签:编码,Java,字节,解码,字符集,GBK,63,ASCII,进阶 From: https://blog.csdn.net/chang_chunhua/article/details/143398810