日期:2014-05-16  浏览次数:20754 次

JSP网页里是charset=UTF-8,Mysql5的数据库也设成了UTF-8,可为啥通过JSP网页存取数据库,中文还是乱码?
JSP网页里是charset=UTF-8:
<%@   page   contentType= "text/html;   charset=UTF-8 "   language= "java "   import= "java.sql.* "   errorPage= "error.jsp "   %>

Mysql5的数据库也设成了UTF-8,可为啥通过JSP网页存取数据库,中文还是乱码?


------解决方案--------------------
你在取数据的时候有告诉mysql你用什么编码取吗?mysql默认的是lan1,虽然你在表里面存的是utf8
------解决方案--------------------
在所有语句前加上:set names utf8
------解决方案--------------------
+--------------------------+-------------------------------------------+
| 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:\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+-------------------------------------------+
以上character_set都是UTF-8么?
再写入数据库时characterEncoding=utf-8
"jdbc:mysql://localhost/xiao?user=root&password=1&useUnicode=true&characterEncoding=utf-8 ";
------解决方案--------------------
关键在于你用什么样的WEB容器。
如果是Tomcat的话需要转码。用Resin就没这种问题。
顺便说一句:70%的乱码解决方案都是为Tomcat准备的。
------解决方案--------------------
还有建数据库时,要指定数据库编码为utf-8,然后楼上们说的:

"在所有语句前加上:set names utf8 "

"关键在于你用什么样的WEB容器。
如果是Tomcat的话需要转码。用Resin就没这种问题。
顺便说一句:70%的乱码解决方案都是为Tomcat准备的。 "

都不是问题!
我就没有加:set names utf8
我就用tomcat!Resin用过几天,偶尔持续占用CPU达50%左右,放弃了
------解决方案--------------------
总结一下楼上各位的。
jsp我不懂,给点建议。我在php下也遇到过一次乱码,加上类似
<%@page language= "java " pageEncoding= "UTF-8 " errorPage= "error.jsp "%>
response.setCharacterEncoding( "utf-8 ");
request.setCharacterEncoding( "utf-8 ");
的代码之后消除。
要确定是哪个坏节乱码。数据通过应用程序存入数据库,再从中取出交给应用程序的每一个环节进行检查。
1. 网页自身文本以utf8存储
2. 网页head标出utf8
3. 就是上面的那段
4. mysql以utf8存储。
5. 以utf8从数据库读取
6. 确保存入与取出相同的过程中编码相同,这样即使数据库中是乱码的,显示出来也会是正常的。
7. 你用的接口对utf8支持不好。