package IO流_转换流_字节转为字符_乱码分析_编码与解码字符集;
import java.io.UnsupportedEncodingException;
/**
- 二.转换流:处理乱码(编码集,解码集)
- 1.编码与解码:
-
编码:字符-->编码字符集-->二进制
-
解码:二进制-->解码字符集-->字符
- 2.乱码原因:
-
1).编码与解码的字符集不同
-
2).字节缺少,长度丢失
*/
public class ConverDemo01 {
public static void main(String[] args) throws UnsupportedEncodingException {
test1();//1.字符集不同
//2.字节缺少,长度丢失
String str = "上海";
byte[] data = str.getBytes();
System.out.println(new String(data,0,3) );//字节数不完整
}
/**
* 编码与解码字符集必须相同否则就会乱码
* @throws UnsupportedEncodingException
*/
public static void test1() throws UnsupportedEncodingException{
//解码 byte-->char
String str = "中国";
//编码-->char-->byte
byte[] data = str.getBytes();
//编码与解码字符集相同
System.out.println(new String(data));
//设定编码字符集
data = str.getBytes("utf-8"); //处理异常
System.out.println(data); //因为字符集不统一,出现乱码
//设定编码字符集
byte[] data2 = "北京".getBytes("utf-8");
//设定解码字符集
str = new String(data2,"utf-8");
System.out.println(str);
}
}
//结果--------------------------------------
中国
[B@1db9742
北京
上?