JSP乱码问题总结

在jsp页面指定编码格式,保证跟mysql的字符集一致:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  

第一步:确保项目编码为UTF-8
这里写图片描述
第二步:确保mysql数据库编码为utf-8,以mysql为例,可到mysql目录下,my.ini文件中修改后,重启mysql服务
这里写图片描述
这里写图片描述
第三步:若使用了spring,在web.xml中加入过滤器 (如果你不是在jsp页面里直接处理form,也是和我一样采用servlet来处理form的话,那么在还要增加一个过滤器,这主要是因为采用的是tomcat的web发布器)

<filter>  
        <filter-name>characterEncodingFilter</filter-name>  
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
        <init-param>  
            <param-name>encoding</param-name>  
            <param-value>UTF-8</param-value>  
        </init-param>  
        <init-param>  
            <param-name>forceEncoding</param-name>  
            <param-value>true</param-value>  
        </init-param>  
 </filter>  
 <filter-mapping>  
        <filter-name>characterEncodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
 </filter-mapping>

第四步:在controller/action中设置

request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8"); 

注意:
若出现添加到数据库中没乱码,从数据库显示出现乱码的情况:添加数据页面跟显示数据页面的编码格式要保持一致。

解决数据库表乱码问题
将所有代码文档设置为utf8格式。同时在链接数据库文件(.java)中,作如下修改:

String url="jdbc:mysql://localhost:3306/my?characterEncoding=UTF-8";

在转换字符编码文件中

//将传递进来的字符串转换成byte数组,并确定其编码
byte[] b=value.getBytes("ISO-8859-1");
//用byte数组构造一个新的字符串,并指定其编码
cn=new String(b,"UTF-8");

tomcat 编译接收乱码
出现乱码大体可能三个地方有问题:
1.jsp 页面乱码 ,没有统一编码方式

<%@ page contentType="text/html; charset=UTF-8"%>

2.jsp 与 Servlet(或者action) 间跳转出现中文乱码,接收或响应没有统一编码方式

    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html;charset=UTF-8");

3.项目整体的编码方式未统一 或者 tomcat 的server.xml 中8080端口编码方式未定义

<Connector port="8080"  redirectPort="8443"
connectionTimeout="20000" disableUploadTimeout="true"  URIEncoding="UTF-8"/>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值