关于struts+hibernate+mysql的问题 乱码 救命啊

我的问题是我在mysql中建立了一个产品表product一个id一个name我用struts+hibernate实现遍历product对象问题是这样的我想在struts中... 我的问题是我在mysql中 建立了一个产品表 product 一个id 一个name
我用struts+hibernate实现遍历product对象 问题是这样的 我想在struts中的action中 调用hibernate的dao类的findbyall方法返回一个list对象
然后输出到页面通过<logic iterate id..... 可是总是显示乱码
mysql的字符编码我也改成gb2312了 页面也是gb2312 为什么还是乱码
结果我在action中打印list对象中product对象的属性还是乱码
可能是因为 在java中默认的编码是iso-8859-1吧 还是我的hibernate设置出了问题 难道我每次都要转码吗!现在都两天 我都睡不着觉 分不多望那位大侠救我这个初学者于水火 吧
这是我的hibernate.cfg.xml的配置<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property>
<property name="connection.url">jdbc:mysql://localhost:3306/productfeedback?useUnicode=true;characterEncoding=gbk"</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="myeclipse.connection.profile">com.mysql.jdbc.Driver</property>
<property name="connection.password">123</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="show_sql">true</property>
<property name="hibernate.transaction.factory_class">
org.hibernate.transaction.JDBCTransactionFactory
</property>
<mapping resource="com/productfeed/pojo/Customer.hbm.xml"/>
<mapping resource="com/productfeed/pojo/Product.hbm.xml"/>
</session-factory>
</hibernate-configuration>
四号楼的灯 你好 过滤器只是用于过滤用户客户端与web服务器之间请求和响应用的
我的意思是 在mysql的cmd控制台中使用select啊insert啊操作中文数据都是正常的,my.ini中的编码设置也都设为gbk了
但是一读到java类中显示的时候就是乱码 我看网上有牛人说直接修改驱动的 我的mysql是安装版的 5.0的 你要是遇到过这种情况能点播我一下吗
展开
 我来答
百度网友26da01a
2008-09-25 · TA获得超过476个赞
知道小有建树答主
回答量:91
采纳率:0%
帮助的人:0
展开全部
首先要确定你的乱码发生在什么时候。你可以先写个类直接将汉字数据插入数据库中,如果是乱码则是你的mysql设置编码格式没有和java文件统一。mysql默认的编码格式是拉丁文,你最好将你的表的编码格式改成utf8。
如果存进去没有问题,那就是从页面往后台传的时候出现了乱码,这个时候你要将页面的编码和后台的java文件统一。主要是在form表单提交时,需要统一编码格式,你在页面的<head>标签里面加上<meta http-equiv="content-type" content="text/html; charset=utf-8" />这句话。不然的话form提交的时候默认还是iso8859-1。
一楼的方法也是一种解决方式,不过我遇到过过滤器设置编码格式为"utf-8"也没有用,只能设置成"gbk"的方式。
读出来时是乱码,那问题一般就出在数据库和java文件之间。表的编码格式和java文件的编码格式也需要统一,不知道你是用什么工具开发的,如果是eclipse的话在文件属性里面能够看到和修改java编码格式的。默认的是“iso8859-1”,而mysql默认的是拉丁文。最好把这两边都统一成utf-8。你可以先确定是不是这里出了问题。
abcgis
2008-09-22
知道答主
回答量:80
采纳率:50%
帮助的人:29.5万
展开全部
一般乱码问题都是自己写过滤器来解决的,Filter内容如下:
---------------------------------------------------------------
package com.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;

public class PageEncodingFilter extends HttpServlet implements Filter {

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}

public void init(FilterConfig arg0) throws ServletException {

}

public PageEncodingFilter() {
super();
}

public void destroy() {
super.destroy();
}

public void init() throws ServletException {
}
}
--------------------------------------------------------------------
web.xml中增加如下配置:
<filter>
<filter-name>PageEncodingFilter</filter-name>
<filter-class>com.filter.PageEncodingFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>PageEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ultimateli
2008-09-23 · 超过11用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:0
展开全部
你把gb2312改成GBK试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式