关于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的 你要是遇到过这种情况能点播我一下吗 展开
我用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的 你要是遇到过这种情况能点播我一下吗 展开
3个回答
展开全部
首先要确定你的乱码发生在什么时候。你可以先写个类直接将汉字数据插入数据库中,如果是乱码则是你的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。你可以先确定是不是这里出了问题。
如果存进去没有问题,那就是从页面往后台传的时候出现了乱码,这个时候你要将页面的编码和后台的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。你可以先确定是不是这里出了问题。
展开全部
一般乱码问题都是自己写过滤器来解决的,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>
---------------------------------------------------------------
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>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把gb2312改成GBK试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询