1. 编码: 字符串对象.getBytes("指定字符集的名称") ——> byte[] bytes
2. 解码: new String(byte[], off, len, "指定解码使用的字符集") -> String对象
package com.cskaoyan.io02.charCode;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
* 编解码只针对字符或者文本数据。
* byte, short, int, long, double等数据类型以及它们的数组没有编解码。
*
* java语言层面的编解码
* 1. 编码: 字符串对象.getBytes("指定字符集的名称") ——> byte[] bytes
* 2. 解码: new String(byte[], off, len, "指定解码使用的字符集") -> String对象
*
* 3. 当我们Coder在编解码的时候,没有指定编解码所使用的字符集,是哪个字符集呢? 默认字符集
* a. 在IDEA中,默认设置的默认字符集就是UTF-8;
* b. 原生的默认字符集和操作系统的本字符集一致。
*
* 基本常识:
* 1. gbk字符集中,两个字节,表示一个中文字符
* 2. UTF-8字符集, 通常习惯性的认为,3个字节表示一个字符
*
*/
public class Demo1 {
public static void main(String[] args) throws UnsupportedEncodingException {
String s = "你好";
// 编码 gbk
byte[] gbks = s.getBytes("gbk");
System.out.println(Arrays.toString(gbks)); /* [-60, -29, -70, -61]*/
// 解码 gbk
String gbkStr = new String(gbks, 0, gbks.length, "gbk");
System.out.println(gbkStr); /* 你好 */
//编码 utf-8
byte[] utf8 = s.getBytes("utf-8");
System.out.println(Arrays.toString(utf8)); /* [-28, -67, -96, -27, -91, -67]*/
//解码 utf-8
String utf8Str = new String(utf8, 0, utf8.length, "utf-8");
System.out.println(utf8Str); /* 你好*/
// 默认字符集
byte[] bytes = s.getBytes();
System.out.println(Arrays.toString(bytes)); /*[-28, -67, -96, -27, -91, -67]*/
//演示乱码
// 基于utf-8字符集编码
byte[] utf8Codes = s.getBytes("utf-8");
// 基于GBK字符集解码
String gbk = new String(utf8Codes, 0, utf8Codes.length, "gbk");
System.out.println(gbk); /* 浣犲ソ*/
//编解码一致 不行
// 基于ASCII
byte[] ascIIS = s.getBytes("ASCII");
//基于ASCII解码
String ascii = new String(ascIIS, 0, ascIIS.length, "ASCII");
System.out.println(ascii); /* ??*/
}
}
乱码显示
![]()