LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1603|回复: 8

数据库查询到的汉字为什么显示为乱码?

[复制链接]
发表于 2004-10-26 16:26:17 | 显示全部楼层 |阅读模式
我的系统是Solaris9,数据库是MySQL,服务器软件webserver6.1。现在正在使用JSP调试程序,但碰到了头痛的汉字显示问题。
  我想在网页中显示,如“喆,烋,镠”等这些二级汉字,但在网页上显示为乱码。
  我做了一个通过表单提交,把这些汉字加入到数据库的jsp网页,字符集设置如下:
  <%@ page contentType="text/html;charset=GBK" %>
    <meta http-equiv="Content-Type" content="text/html; charset=GBK">
  在存入数据时,我做了一个编码转换:
  text=new String(text.getBytes("8859_1"),"GBK");
  这时,在数据库中存入“喆,烋,镠”等这些汉字,在数据库这些汉字可以正常显示。同时可以上直接在网页上输出这些汉字,显示正常。
  但当我又做了一个读数据库的网页时,从数据库中读出的汉字在网页上就显示为??这些乱码了。
  我觉得很不对劲,怎么数据库中能正常显示的汉字,读到网页上就成了乱码?
  我想问问各位朋友这是什么原因呀?怎么才能解决呀
发表于 2004-10-26 19:08:29 | 显示全部楼层
你的读取的页面如何做的?
 楼主| 发表于 2004-10-26 22:59:54 | 显示全部楼层

我读数据库的代码,直接看数据库汉字是可以显示的。

<%@ page contentType="text/html;charset=GBK" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%@ page language="java" %>

<html>
<head>
<title>test hanzi</title>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<%
   String driver="org.gjt.mm.mysql.Driver";
   String url="jdbc:mysql://localhost:3306/yyj";
   String userID="yyj";
   String passwd="yyj";
   String qryName="select person from hanzi;";
   Class.forName(driver);
   Connection DBcon=DriverManager.getConnection(url,userID,passwd);
   Statement stmt=DBcon.createStatement();
   ResultSet rs=stmt.executeQuery(qryName);
%>
</head>
<body>
<%
  String text="";
  while(rs.next())
  {
          text=rs.getString("person");
        out.print(text+"<br>");
  }
   rs.close();
   stmt.close();
   DBcon.close();       
%>
</body>
</html>
发表于 2004-10-26 23:06:16 | 显示全部楼层
jdbc:mysql://localhost:3306/yyj后面加上转码
 楼主| 发表于 2004-10-26 23:14:06 | 显示全部楼层

加上什么转码?

要加上什么转码,才能在网页上正常显示汉字?
发表于 2004-10-26 23:18:30 | 显示全部楼层
jdbc:mysql://localhost:3306/yyj?useUnicode=true&&characterEncoding=gb2312
 楼主| 发表于 2004-10-26 23:21:25 | 显示全部楼层
我试一下
 楼主| 发表于 2004-10-26 23:32:32 | 显示全部楼层

谢谢版主,可以在网页上显示了

但我用gb2312还是不行,后来换了GBK就行了,如下
jdbc:mysql://localhost:3306/yyj?useUnicode=true&characterEncoding=GBK

我想是不是gb2312编码中没有那些汉字,而GBK中有。
我搞不懂汉字编码的问题,版主能给我讲一下gb2312和GBK的区别么?还有我下Windows平台下读数据库时就不用加转码,也可以正常显示汉字。而在Solaris下不加转码的情况下可以显示一般的汉字,但不能显示像上面的一些特殊汉字。请问这又是怎么回事儿?
发表于 2004-10-26 23:48:53 | 显示全部楼层
GBK定义的字符集要大于gb2312,如果你把所有的转码都换成utf-8,应该也是可以的,也许Solaris系统本身中对于中文的支持不如windows好,就产生了这些问题!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表