首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

如何解决JSP页面存储查询mysql数据库的中文字段信息都是乱码

2012-10-17 
怎么解决JSP页面存储查询mysql数据库的中文字段信息都是乱码我在测试了一下 我使用jsp页面通过jdbc连接mys

怎么解决JSP页面存储查询mysql数据库的中文字段信息都是乱码
我在测试了一下 我使用jsp页面通过jdbc连接mysql数据库的
发现 如果是在命令行中插入中文字段信息 在命令行和JSP页面读取都显示正常
但如果在 页面中通过表单提交插入中文信息 则会在命令行和JSP页面均显示乱码
当前联接系统参数(mysql)

SQL code
+--------------------------+---------------------------------------------------------+| Variable_name            | Value     |+--------------------------+---------------------------------------------------------+| character_set_client     | gbk     || character_set_connection | gbk     || character_set_database   | utf8     || character_set_filesystem | binary     || character_set_results    | gbk     || character_set_server     | latin1     || character_set_system     | utf8     || character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |+--------------------------+----------------------------------------------------




mysql命令行执行show create table boke的结果
SQL code
--------------+| Table | Create Table              |+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| boke  | CREATE TABLE `boke` (  `id` int(11) NOT NULL auto_increment,  `title` varchar(200) collate utf8_bin NOT NULL,  `content` longtext collate utf8_bin,  `owner` varchar(20) collate utf8_bin NOT NULL,  `time` varchar(40) collate utf8_bin NOT NULL,  PRIMARY KEY  (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin |+-------+-----------------------------------



所有的JSP页面均采用的GBK编码
并且有将中文转码为ISO-8859-1
Java code
      String title=request.getParameter("title");      String mytitle=new String(title.getBytes("ISO-8859-1"));                        String content=request.getParameter("content");      String mycontent=new String(content.getBytes("ISO-8859-1"));      //java.util.Date date=new java.util.Date();            SimpleDateFormat tempDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");      String time = tempDate.format(new java.util.Date());//取当前时间


下面是连接数据库的代码
Java code
try{           Class.forName("com.mysql.jdbc.Driver");           String url="jdbc:mysql://localhost/test?user=root&password=1234";           Connection con=DriverManager.getConnection(url);           String sql="insert into boke value(0,?,?,?,?)";                                PreparedStatement pstmt=con.prepareStatement(sql);                      pstmt.setString(1,mytitle);           pstmt.setString(2,mycontent);           pstmt.setString(3,owner);           pstmt.setString(4,time);                      //PreparedStatement pstmt=con.prepareStatement(sql);           int m=pstmt.executeUpdate();           pstmt.close();           con.close();                 }catch(Exception e){          out.print(e.getMessage());                }


但还是不能解决乱码 求解释
还有在String url="jdbc:mysql://localhost/test?user=root&password=1234"; 中加入编码格式GBK也没用

[解决办法]
你这里还得考虑系统的编码,你全部转换成UTF-8试试
[解决办法]


| character_set_database | utf8
数据库用的是UTF-8,客户端用GBK连接,这都没问题,但是JSP页面也得用UTF-8或者在保存前使用代码转化成UTF-8编码(String mycontent=new String(content.getBytes("ISO-8859-1"),"UTF-8");)也可以
[解决办法]
把所有的编码都改为UTF-8,包括jsp页面,数据库编码等

热点排行