jsp页面添加中文数据到mysql数据库乱码问题
jsp页面中输入中文数据,保存到mysql数据库中是乱码,从数据库中读取数据后在jsp页面显示还是乱码,要解决此问题需从以下几个方面考虑:
1、获得mysql的字符集
查看mysql字符集的命令是:
mysql> show variables like "character_set_%";
character_set_system 总是utf-8
这5个最好总是保持一致,
character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server
2、在jsp页面指定编码格式,保证跟mysql的字符集一致:
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
3、web.xml添加字符编码过滤器,编码方式也要保证跟mysql的字符集一致:
- <!-- 著名 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>
- </filter>
- <filter-mapping>
- <filter-name>encodingFilter</filter-name>
- <url-pattern>*.do</url-pattern>
- </filter-mapping>
注意:添加数据页面跟显示数据页面的编码格式要保持一致,不然的话就会出现添加到数据库中没乱码,从数据库中显示出现乱码的情况。
解决MySql数据乱码:
1 写过滤器设置编码格式(格式和JSP页面的编码一样),或则在请求里面写request.setCharacterEncoding("编码方式");
2 如果是查询出数据乱码,在链接的URL上加上编码格式(你这里加了,没问题);
3 修改my.ini文件里面的default-character-set= 您要的编码格式 (一共有两处,你查找一下 改为一样的编码格式)
3 如果是写入到数据库之后是乱码(前提是已经写了过滤器处理编码),修改my.ini文件里面查找sql-mode 设置 sql-mode =
"NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";