Servlet相关的几种中文乱码问题

Servlet相关的几种中文乱码问题

  1. 浏览器调用jsp,html等页面中文显示乱码

    1. 使得文件本身以utf-8字符集编辑保存

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

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

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

      3. 具体操作:

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

    1. response乱码问题

      1. 控制浏览器用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
      2. 将response对象中的数据以UTF-8解码后的字节流发向浏览器

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

      1. post请求乱码

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

        1. 原因:

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

        2. 解决方法一:

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

          <Connector port="8080" protocol="HTTP/1.1"
          ​
               maxThreads="150"   connectionTimeout="200000"
          ​
               redirecPort="8443"    <!-URIEncoding="utf-8"-> />  //注释为需要添加的部分
        3. 解决方法二:

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

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

    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;
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值