小弟用Tapestry+Hibernate,后台用MySql做了个有查询功能的小程序,读取的汉字字符在网页上总是显示乱码,在命令行察看数据表也是,用insert into xTablex values...存入的汉字在数据表里可以显示中文,但是一读到页面上还是乱码。不懂啊~~~~~

解决方案 »

  1.   

    你jsp页面要设置为中文编码,比如gbk。<%@ page contentType="text/html; charset=gbk" language="java"  import="java.sql.*" %>
    命令行方式需要启动系统进程conime.exe才可以显示中文,你看你的任务管理器是否有这个进程,若没有是不行的。但这个进程你不能运行,正常情况下,它是随cmd一起运行的(在windows xp的开始菜单的“运行”里输入cmd)。
      

  2.   

    一、不知道你用的是什么版本的mysql,我现在用的是mysql4.0和mysql5.0
    mysql4.0安装时不需要选择编码,默认的内核编码是:GBK
    而mysql5.0安装时需要选择编码,我当时安装的时候没有记清mysql的内核编码,我就选了gb2312这两个我现在用起来都正常,二、还有不知道你的jsp中连接mysql的语句是如何写的?1、String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd + "&useUnicode=true&characterEncoding=gb2312";
      Class.forName("com.mysql.jdbc.Driver").newInstance();2、String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;
      Class.forName("com.mysql.jdbc.Driver").newInstance();这两种方式连接我上面的两种mysql中文都显示正常,我把characterEncoding=gb2312改为characterEncoding=8859_1中文反而显示乱码。三、jsp页面顶部要加上
        <%@ page contentType="text/html; charset=gbk" language="java"  import="java.sql.*" %>四、连接mysql的驱动程序的版本不同,也可能产生乱码,我连接上面两种版本的mysql的驱动是:
        mysql-connector-java-3.2.0-alpha-bin.jar
        可以到http://www2.tw.freebsd.org/pub/MySQL/Downloads/Connector-J/下
        mysql-connector-java-3.2.0-alpha.zip
       解压后找到mysql-connector-java-3.2.0-alpha-bin.jar复制到你的应用程序的WEB-INF\lib文件夹下即可。
     我也是一个jsp初学者,以上所述,仅供参考。
      

  3.   

    谢谢两位兄弟的支持,问题已经解决,是Hibernate的配置问题,需要在Hibernate.cfg.xml加上相应的字符编码选项。
    thanks a lot!