当前位置: 代码迷 >> Java Web开发 >> 如何解决JSP页面存储查询mysql数据库的中文字段信息都是乱码
  详细解决方案

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

热度:4349   发布时间:2013-02-25 21:10:49.0
怎么解决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试试
------解决方案--------------------------------------------------------
  相关解决方案