出现原因:编码与解码编码不一致
编码: 字符 ---编码字符集----> 二进制
解码: 二进制 ---解码字符集---> 字符
解决方法:
package convertIO;
import java.io.UnsupportedEncodingException;
//编码与解码字符集必须相同,否则乱码
public class Convert {
public static void main(String[] args)
throws UnsupportedEncodingException {
//工作环境的编码为utf-8(视自己情况而定)
//解码 byte---->char
String str = "中国";
//编码 char--->byte
byte[] data = str.getBytes();
//编码与解码字符集相同
System.out.println(new String(data));
//设定编码字符集
data = str.getBytes("gbk");
//不统一,出现乱码
System.out.println(new String(data));
//编码
byte[] data2 = "中国".getBytes("gbk");
//解码
str = new String(data2,"gbk");
System.out.println(str);
}
}
因字节缺失乱码
package convertIO;
public class Convert2 {
public static void main(String[] args) {
//解码 byte---->char
String str = "中国"; //utf-8
//编码 char--->byte
byte[] data = str.getBytes();
//因字节缺失乱码
//如果编码为gbk,将4改为3即可看到乱码效果
System.out.println(new String(data,0,4));
}
}