j2ee与mysql乱码过滤_J2EE的中文乱码总结

一、乱码的问题环节判断

遇到乱码,我们首先要定位是在哪一个环节乱码的,那就要先来熟悉下J2EE中中文字符所经历的环节:

1、存数据时又可分为两步

1)先从页面到服务器(多由jsp页面编码设置及web服务器接收设置导致)

2)再由服务器到数据库(多由数据库导致)

2、取数据时也可分为两步

3)先从数据库到服务器(多由数据库导致)

4)再由服务器到页面(多由jsp页面编码设置)

如何判断问题环节:

1、我们可以先插入一条中文数据,看看数据库中是否乱码,如果乱码,则问题就出在插入数据环节;

2、我们可以在数据库中直接插入一条中文数据,并且数据库查看正常,然后用我们的页面展示查看,若乱码,则问题出在获取数据环节;

3、在控制台打印插入数据时的中文数据,若乱码,问题就在页面到服务器之间;

4、取数据时同样可以在控制台打印从数据库取出的中文数据,若乱码,则问题在数据库到服务器之间;

二、乱码问题的处理

首先,大家熟悉的中文编码有UTF-8、GBK、GB2312等,一个系统中,都要尽量保持编码格式的统一,以免不必要的麻烦,我平时都是采用UTF-8作为统一编码。

1)在jsp页面上可能有这几种情况导致乱码:

a)下面代码中设置为UTF-8的地方没有设置或者设置不一致

pageEncoding="UTF-8"%>

b)页面本身的编码格式设置不正确

在eclipse中右击文件-properties-resource

Text file encoding中有默认编码格式设定并可以修改编码格式

c)浏览器编码格式的设定导致,将浏览器上的编码格式设定为UTF-8,各浏览器设置方式可能稍有差异

2)WEB服务器

web服务器对中文数据的接收也会造成乱码,而解决方法又要根据提交方式分为两种

a)get方法

在server.xml里面增加URIEncoding="UTF-8"

b)post方法

可在后台获取数据时添加转码如下:

String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ;

Web服务器也可能已经替我们完成了转码工作,在tomcat6.0.32上就需要过滤器,但tomcat6.0.35没有过滤器也一样可以,jetty也同样不需要自己添加过滤器

3)数据库

数据库的编码格式设定主要分为三种:

一种是建立的表的语系设定问题

一种是数据库server端的编码格式设定,这种设定决定了中文数据写入时是否会乱码;

还有一种是client端的编码格式设定,这种设定决定了中文数据读取给web服务器时是否会乱码。

由于各种数据库的不同、部署环境的操作系统不同导致的数据库版本不同,导致各种数据库编码格式的设置也不太相同。

下面为常见mysql乱码问题的解决方法:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值