JavaEE应用中MySQL中文乱码完全解决方案----转自:http://www.blogjava.net/bolo

相信很多使用MySQL数据库做开发的朋友,都或多或少的遇到过中文乱码的问题。大象根据项目实践,在此将自己的成功经验总结拿出来和大家分享。
    我使用的MySQL数据库版本是5.0.27,按以下几点处理,可以很好的解决中文乱码问题。

    1、数据库安装
    安装数据库时,有个服务器的字符集设置,这里不要使用默认的latin1字符集,而应该选择utf8字符集。在创建表的时候,还应该设定默认字符集编码为utf8
    2、数据库配置文件
    假设你在数据库安装时,采用了默认的字符集设置,或是使用了gb2312gbk等等,我们可以通过修改MySQL根目录下的my.ini文件来改变字符编码。
    打开my.ini文件,修改下图中画红线的部分。
请注意是utf8,而不是utf-8或UTF-8
    
    第二个红线部分的设置很关键,它主要用来指定表字段的默认字符集为utf8。大象试过,在所有设置都相同的情况下,这里如果保留默认的latin1,当在应用中向数据库插入数据时,就会出现乱码。而改成utf8则不会。
    3、数据库工具
    我觉得工具的选择很重要,现在关于MySQL的工具也有很多。我也用过很多,在这里我向大家推荐Navicat Lite for MySQL工具,界面如下
    
    界面简洁,功能强大,特别是能很好的处理中文字符。相信大家都能很快上手。我目前使用的是8.1版。
    4、Eclipse工作空间
    如今使用Eclipse工具做Java开发的占绝大多数,那么为了避免中文乱码的发生,Eclipse的工作空间也应该设置成UTF-8编码。
    
    5、页面字符编码
    我们已经将数据库与开发工具都统一成UTF-8的字符编码,那么对于展示层的JSP,我们也应该进行相应的设置。
    JSP页面顶部设置编码格式

    <%@ page contentType="text/html;charset=UTF-8" %>
     head之间加入meta设置
    < meta  http-equiv = "Content-Type"  content = "text/html;charset=utf-8" />
     另外,大象建议表单提交采用post方式。
     6、数据库连接
     连接数据库的地址中我们也应该加入字符设置,请看下面蓝色的字符。
    jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=UTF-8
     7、容器配置文件
     还有最重要的一个步骤不能忘记,就是要在web.xml中加入字符过滤器。
    <!-- Filter 定义  -->
    <!-- Character Encoding filter -->
    <filter>
        <filter-name>encodingFilter</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 映射 -->
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    这里用到的是Spring的编码过滤器,我们可以直接拿来用。不过请注意forceEncoding这个参数,把它设置为true表示不管请求中的编码是什么格式,都将强制采用encoding中设置的编码方式。另外对于响应也将按照encoding指定的编码进行设置。
    通过以上几个步骤,应该可以完全解决使用MySQL数据库所带来的中文乱码问题。如果你按照这些设置做过后还是出现了乱码,请提出来,让我们一起来解决。
    大象不建议大家为了实现中文问题而采取gb2312gbk等编码方式,我们应该使用基于Unicode的编码。而UTF-8是目前互联网上使用最广泛的一种Unicode的实现方式,特别是目前JavaEE的企业级项目,都是基于互联网式的Web应用。所以我们应该使用这种统一的字符集编码方式。另外,对于SQLServerOracle数据库,不会出现像MySQL这样的乱码问题,但我们也应该坚持在开发过程中统一采用UTF-8的编码方式。希望此文能对大家有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值