struts2 mysql 乱码_struts2项目插入中文到mysql数据库乱码的解决方法

本文介绍了如何解决在Struts2项目中遇到的MySQL数据库中文插入出现乱码的问题,包括检查和修改页面编码、调整数据库字符集、设置Tomcat服务器编码以及添加Struts2过滤器等步骤。

项目又出了一些小问题,在更新/插入中文数据到mysql数据库时会显示问号。

我做了如下工作解决了问题:

1. 检查页面编码

将所有的jsp页面编码方式、字符集更改为

2. 更改数据库字符集/编码方式

将mysql配置文件my.ini相关内容改为

[mysql]

default-character-set=utf8

character-set-server=utf8

在mysql命令行运行以下代码(是否有必要存疑)

set character_set_database=utf8;

set character_set_server=utf8;

set character_set_client=utf-8;

set character_set_connection=utf-8;

在mysql命令行运行SHOW VARIABLES LIKE 'character_set_%';查看字符集

运行结果应为:

+--------------------------+---------------------------------------------------------------+

| Variable_name | Value |

+--------------------------+---------------------------------------------------------------+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | C:\Program Files (x86)\MySQL\MySQL Server 5.5\share\charsets\ |

+--------------------------+---------------------------------------------------------------+

已经存在的数据库编码方式的修改

导出数据库结构及内容到sql文件

用文本编辑器打开sql文件

修改相关的编码方式,如把latin1修改为utf8

保存并重新导入sql文件到数据库

3. 中文参数传输编码设置

1. 更改tomcat服务器编码

修改Tomcat—->conf—–>server.xml文件,在修改端口的标签后面加一行代码,如下:

connectionTimeout="20000"

redirectPort="8443" URIEncoding="UTF-8"/>

2. 添加struts2 过滤器

建立名为EncodeFilter过滤器类(类名可更改),代码如下:

package dhu.yunfeng.filter;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

public class EncodeFilter implements Filter {

public void destroy() {

}

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

request.setCharacterEncoding("utf-8");

chain.doFilter(request, response);

}

public void init(FilterConfig arg0) throws ServletException {

}

}

在web.xml添加过滤器。

注意:修改类名为自己命名的类,要在已存在过滤器之前

代码如下:

encoding

dhu.yunfeng.filter.EncodeFilter

encoding

/*

4. 修改国际化资源编码所使用的字符集

打开struts.xml,添加或修改相关内容

重启tomcat服务器,问题解决。

参考文章:

http://ivorytower.iteye.com/blog/179279

http://www.2cto.com/database/201410/341144.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值