struts2项目插入中文到mysql数据库乱码的解决方法
2016-04-17 13:12
423 查看
项目又出了一些小问题,在更新/插入中文数据到mysql数据库时会显示问号。
我做了如下工作解决了问题:
1. 检查页面编码
将所有的jsp页面编码方式、字符集更改为
2. 更改数据库字符集/编码方式
将mysql配置文件my.ini相关内容改为
在mysql命令行运行以下代码(是否有必要存疑)
在mysql命令行运行
运行结果应为:
已经存在的数据库编码方式的修改
导出数据库结构及内容到sql文件
用文本编辑器打开sql文件
修改相关的编码方式,如把latin1修改为utf8
保存并重新导入sql文件到数据库
3. 中文参数传输编码设置
1. 更改tomcat服务器编码
修改Tomcat—->conf—–>server.xml文件,在修改端口的标签后面加一行代码,如下:
2. 添加struts2 过滤器
建立名为EncodeFilter过滤器类(类名可更改),代码如下:
在web.xml添加过滤器。
注意:修改类名为自己命名的类,
代码如下:
4. 修改国际化资源编码所使用的字符集
打开struts.xml,添加或修改相关
重启tomcat服务器,问题解决。
参考文章:
/article/4497030.html
http://www.2cto.com/database/201410/341144.html
我做了如下工作解决了问题:
1. 检查页面编码
将所有的jsp页面编码方式、字符集更改为
<%@ page contentType="text/html;charset=UTF-8"%> <%@ page pageEncoding="UTF-8"%>
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文件,在修改端口的标签后面加一行代码,如下:
<Connector port="8080" protocol="HTTP/1.1" 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添加过滤器。
注意:修改类名为自己命名的类,
<filter-mapping></filter-mapping>要在已存在过滤器之前
代码如下:
<filter> <filter-name>encoding</filter-name> <filter-class>dhu.yunfeng.filter.EncodeFilter</filter-class> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
4. 修改国际化资源编码所使用的字符集
打开struts.xml,添加或修改相关
<constant />内容
<!-- 指定国际化编码所使用的字符集 --> <constant name="struts.i18n.encoding" value="UTF-8"/>
重启tomcat服务器,问题解决。
参考文章:
/article/4497030.html
http://www.2cto.com/database/201410/341144.html
相关文章推荐
- Java生成六位验证码(发短信验证)
- java正则表达式之java小爬虫
- 错误解决-----java was started but returned exit code=13
- eclipse安装Spring插件后无法使用maven
- Eclipse使用Maven创建Web时错误:Could not resolve archetype
- java的常用算法
- 六大设计原则(2) 单一职责原则
- MyEclipse安装后需要进行的配置
- Java中普通代码块,构造代码块,静态代码块区别
- myeclipse快捷键ctrl+alt+向下箭头与屏幕翻转快捷键冲突解决方案
- Java:输入输出流
- java Executor框架
- JAVA 多态
- Struts自定义类型转换器
- Java线程的几种状态
- 20145324 《Java程序设计》第7周学习总结
- Java下Web MVC的领跑者:SpringMVC
- Spring MVC 入门示例讲解
- 六大设计原则(1) 里氏替换原则
- Java并发编程-ReentrantLock源码分析