【日常积累】web乱码一锅炖

乱码常见场景:页面显示乱码,表单提交乱码,数据库存储乱码等。

乱码原因:编码-解码过程中码表不一致产生的。

字符编码:页面默认编码为ISO-8859-1,简体中文编码为GB2312(2个字节),中文汉字集(简体与繁体)编码为GBK(2个字节),国际编码为UTF-8(3个字节)。

显示乱码:
    HTML中标签下:
    JSP中顶部添加:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
        标签下添加:
    IDE中设置jsp页面编码utf-8:以eclipse为例,window > Prefrences > Web > JSP    Files > Encoding处改成支持UTF-8格式的选项。
    
传输乱码:
    tomcat中 servlet.xml 中配置:
                        redirectPort="8443" URIEncoding="UTF-8"/>
    
    request请求:
            浏览器使用什么码表打开当前页面, 就使用什么码表来发送请求参数.
        get请求Java代码手动编解码:username= new String(username.getBytes("ISO-8859-1"),"UTF-8");
        post请求:request.setCharacterEncoding("utf-8");
    
    response响应:
        response.setCharacterEncoding("utf-8"); //通知服务器使用utf-8来发送响应实体中数据
        response.getOutputStream().write("中国".getBytes("utf-8"));// 指定编码为utf-8 -- 只对本行有效
        
        response.setContentType("text/html;charset=utf-8");//指定浏览器在接收数据时也使用同一个编码来打开数据
        response.setHeader("Content-Type", "text/html;charset=utf-8");//与上面等价
        
    Filter 过滤器:
        Spring为例
        
        
            characterEncodingFilter
            org.springframework.web.filter.CharacterEncodingFilter
            
                encoding
                UTF-8
            

            
                forceEncoding
                true
            

        

        
            characterEncodingFilter
            /*
        

        
    数据库连接:
        MySQL: url="jdbc:mysql://localhost:3306/Laptop?useUnicode=true&characterEncoding=utf-8"
        MySQL修改默认客户端连接字符集:修改配置文件my.ini编码  default-character-set=utf-8。
        
    插入数据库
        建库;CREATE DATABASE mydb3 CHARACTER SET utf8 COLLATE utf8_bin;
        建表:CREATE TABLE `books` (
                              ......
                    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


参考:https://blog.csdn.net/u010246789/article/details/52669998
           https://blog.csdn.net/GreetTuring/article/details/55682565
           https://www.cnblogs.com/cst11021/p/4964007.html

你可能感兴趣的:(日常积累,Web)