zoukankan      html  css  js  c++  java
  • Servlet相关的几种中文乱码问题

    Servlet相关的几种中文乱码问题
    浏览器调用jsp,html等页面中文显示乱码
    使得文件本身以utf-8字符集编辑保存

    让浏览器浏览器以utf-8字符集解析

    在浏览器中右键选择编码格式为utf-8;

    通过<meta>标签模拟response头,起到告诉浏览器用utf-8的编码解析

    具体操作:

    //html
    <meta name="content-type" content="text/html; charset=UTF-8">或<meta charset="utf-8">
    //jsp
    <%@ pageEncoding="utf-8"%>
    //xml
    <?xml encoding="UTF-8"?>
    通过浏览器调用servlet,页面显示乱码。
    response乱码问题

    控制浏览器用UTF-8进行解码

    response.setContentType("text/html;charset=UTF-8"); 
    //或者
    response.setHeader("content-type","text/html;charset=utf-8");

    //ps:setHeader是HttpServletResponse的方法。如果想在拦截器Filter中设置字符编码,则无此方法,因为Filter的doFilter方法的参数类型是ServletResponse
    将response对象中的数据以UTF-8解码后的字节流发向浏览器

    response.setCharacterEncoding("UTF-8");
    request乱码问题

    post请求乱码

    resquest.setCharacterEncoding("页面使用的字符集"); //只对post请求有效
    GET请求(URL方式传递参数乱码)

    原因:

    //问题本质是get方式传递的参数内容默认编码方式问ISO8859-1,而且使用request.setCharacterEncoding("utf-8")也无法解决问题。

    解决方法一:

    修改tomcat服务器的配置文件,即修改tomcat目录下的conf/server.xml文件。

    <Connector port="8080" protocol="HTTP/1.1"

        maxThreads="150"   connectionTimeout="200000"

        redirecPort="8443"    <!-URIEncoding="utf-8"-> /> //注释为需要添加的部分
    解决方法二:

    在servlet中手动转换字符集并转换(不建议使用)。

    //对应Servlet中:
    String name = request.getParameter("name");
    String value = null;
    value = new String(name.getBytes("ISO-8859-1"),"页面使用的字符集");
    调用数据库出现乱码
    修改数据库字符集或表字符集

    #sql语句
    show create table 表名; #查询表的信息(主要看字符集)
       /*例:Table Create Table
    Dog CREATE TABLE `dog` (
    `dog_id` int(11) NOT NULL AUTO_INCREMENT,
    ......
    PRIMARY KEY (`dog_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8*/
    #修改完数据库字符集,需要重启mysql数据库
    ALTER DATABASE 数据库名 CHARACTER SET utf8;
      #修改表字符集
    ALTER TABLE 表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

  • 相关阅读:
    列出九宫格输入组合
    判断是否平衡二叉树
    Jetson tx2的tensorflow keras环境搭建
    TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index'
    python时间序列画图plot总结
    pandas 读csv文件 TypeError: Empty 'DataFrame': no numeric data to plot
    yolov3实践(二)
    yolov3实践(一)
    USB摄像头无法正常读取问题
    tensorflow神经网络拟合非线性函数与操作指南
  • 原文地址:https://www.cnblogs.com/hyhy904/p/10962039.html
Copyright © 2011-2022 走看看