以下是我在使用Mysql过程中遇到的乱码问题的解决方法的总结 首先我是使用mysql-4.1.14版本,现在换成了5.0了,支持存储过程了。 数据库字符集导致的乱码 1. 启动MySQLQueryBrowser,在里面输入 ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin, 将test数据库的编码设为utf8。 2. 修改表的编码:ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 以上命令就是将一个表category的编码改为utf8 3. 修改字段的编码:直接在MySQLQueryBrowser里右击表,然后点编辑表,在里面修改或输入代码: ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR ( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 我个人比较懒,所以我选用第一种方法。 注意:在完成设置后要重新启动数据库 其实最简单的方法是改变数据库的默认字符集编码(必须是数据库支持的字符集编码,原始的好像是lain1) 在MYSQL文件夹里面找到my.ini改里面的char为UTF8, jsp页面乱码: 4.在JSP页面修改charset 即可,<%@ page contentType="text/html; charset=UTF-8" %> 5.在JSP连接数据库的语句中加入如下内容 private String url="jdbc:mysql://localhost/DB_NAME?useUnicode=true&characterEncoding=UTF-8"; 6.JSP页面没有指定数据提交的编码,就会造成乱码:对于这种乱码的情况,只需在页面开头加上request.setCharacterEncoding("UTF-8"); 一定要在在数据被使用前加上这句话 7.直接在页面接受参数时进行字符集转化。例如String bookname=new String(request.getParameter("bookname").getBytes("ISO8859_1"),"gb2312"); 总结:先要判断JSP乱码是插入数据库之后乱码,还是JSP页面刚提交过来就乱码了,如果JSP刚接收上一页面的数据显示就乱码了,肯定是字符集不对,或者没有加request.setCharacterEncoding("UTF-8"); |