16 乱码问题原因与解决方法

出现原因:编码与解码编码不一致
编码: 字符 ---编码字符集----> 二进制
解码: 二进制 ---解码字符集---> 字符
解决方法:

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));
    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容