关于孙卫琴老师的TOMCAT与java bookstore中文乱码

21 篇文章 0 订阅

解决乱码问题,

要保证以下几个地方统一:
1.建数据库时的字符编码

2.建表时的字符编码

3.连接数据库的URL字符编码

4.程序的字符编码.


我的mysql默认是gb2312编码 具体设置可以到my.ini设置

java部分尽量连接jdbc:mysql://127.0.0.1:3306/databasename?useUnicode=true&characterEncoding=gb2312

每个jsp文件<%@ page contentType="text/html; charset=GB2312" %>

甚至可以用过滤器

在WEB_INF里的web.xml加入

    <filter>
        <filter-name>setCharacterEncodingFilter</filter-name>
        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>GB2312</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>setCharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

孙老师在jsp静态包含时有个common.jsp,里面是将字符串由默认"ISO-8859-1"转为GB2312,问题就出在这里!!!

因为MySQL默认使用 ISO-8859-1 ( 即Latin1 ) 字符集,而我在安装mysql的时候已经将其默认编码改为gb2312,导致common.jsp转换错误出现乱码。所以这里需要将common.jsp稍微改动一下

原来是这样的!

<%!
   public String convert(String s){
    try{
      return new String(s.getBytes("ISO-8859-1"),"GB2312");
    }catch(Exception e){return null;}
   }
%>

改完

<%!
   public String convert(String s){
    try{
      return new String(s.getBytes(),"GB2312");
    }catch(Exception e){return null;}
   }
%>

这样就可以解决乱码问题啦啦啦!

另外,孙老师在WEB_INF里的lib里的那个jdbc驱动可能有点老了,我们可以将它更新下,然后直接放到tomcat\lib下,删掉WEB_INF即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值