tomcat7 乱码 为什么这样解决 编码本质 几行代码 深入理解

package com.neil.note;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class Practice {

    public static void main(String[] args) {
        try {
            String s="小白";
            //浏览器请求参数 转化为字符集数组
            byte[] utf_8bytes=s.getBytes("utf-8");//
            //字符数组转为二进制字符集 传到tomcat服务器 字符集数组
            System.out.println("utf8\"小白\"的字符集数组"+Arrays.toString(utf_8bytes));// [-27, -80, -113, -25, -103, -67]

            //tomcat 再使用iso8859-1把utf8的字符集解码(这里应该是先将字符集编码为ISO8859-1,再解出)
            //因为和utf8 解出的标准不同,所以就乱码啦。
            // 每一个终端的本质都是将二进制流 先编码 再解码  才能变成认类理解的文字,图像,视频
            String tomcatdisplay=new String(utf_8bytes, "ISO-8859-1");//å°ç½
            /**此时字符串已是一个字符编码为iso8859-1的字符串了,显示是上面的一串乱码;
            获取这串乱码的编码字符集 (这里的getBytes里的方法写调用的是encode)就是把它编回原来的样子,字符集数组可以按照编码方式编成字符,同样
            字符也可以按照相同的编码方式编回成字符集数组,可逆的 一对一。
             */
            byte iso_bytes[] = tomcatdisplay.getBytes("ISO-8859-1");
            System.out.println("iso8859-1\"乱码\"的字符数集组"+Arrays.toString(iso_bytes));//[-27, -80, -113, -25, -103, -67]
            String normalStr = new String(iso_bytes,"utf-8");
            System.out.println(normalStr);//小白
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            /**
             * 下次乱码莫慌   本质上就是二进制流的传递  二进制流正确 总有一个解码是正确的
             */
        }

    }



}

请看我的代码注释 ,演示很明确。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值