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
由于mysql默认的字符集编码为latin ,而我们一般使用的是gbk 或者 gb2312编码
所以不改过来容易造成乱码
我用的是mysql 5.0 安装程序安装的 ,安装目录在C:\Program Files\MySQL\MySQL Server 5.0
请到这个目录下面找到 my.ini文件
修改default-character-set=latin1 为 default-character-set=gbk
或者修改default-character-set=latin1 为 default-character-set=utf8
(这个根据页面编码来确定)
记住有两个地方啊 都要改
最重要的一点就是修改文件前,先停止mysql服务 ,等修改后再重新启动
使用dos命令 :net stop mysql 来停止服务 net start mysql 来启动
注意:字符集在书写时格式要对,否则无法启动mysql;比如说将utf8写成utf-8,就会出现启动不了服务器的现象。
2、在jsp页面指定编码格式,保证跟mysql的字符集一致:
view plaincopy to clipboardprint?<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
3、web.xml添加字符编码过滤器,编码方式也要保证跟mysql的字符集一致:
view plaincopy to clipboardprint?<!-- 著名 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> <!-- 著名 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>
注意:添加数据页面跟显示数据页面的编码格式要保持一致,不然的话就会出现添加到数据库中没乱码,从数据库中显示出现乱码的情况。