知道美河 | 上传资料 | VIP申请 | 精品课程 | 资料搜索 | 问题反馈 | 会员手册 | 积分消费 | 积分充值 | 帐号保护
美河学习学习在线赞助VIP

美河学习在线(主站) eimhe.com

 找回密码
 建立账号
查看: 11929|回复: 8

[讨论] hibernate+mysql中文乱码问题

[复制链接]
发表于 2007-4-5 15:56:25 | 显示全部楼层 |阅读模式
hibernate+mysql中文乱码问题怎么解决,急用,谢谢QQ47179640
发表于 2007-4-5 17:07:56 | 显示全部楼层
发表于 2007-4-5 20:24:00 | 显示全部楼层

回复 #3 030101044 的帖子

你说的很对,mysql可以在url里配置,但是,必须使前后台保证字符集一致性
发表于 2007-4-5 20:49:15 | 显示全部楼层
用hql语句的话要加<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
页面传递字符的话用过滤器就搞顶了:
package com.lang.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 org.apache.log4j.Logger;

/**
* Example filter that sets the character encoding to be used in parsing the
* incoming request
*/
public class SetCharacterEncodingFilter implements Filter {
        private String ecodeing=null;
    private static Logger log = Logger.getLogger(SetCharacterEncodingFilter.class);

/**
* Take this filter out of service.
*/
public void destroy() {
}
/**
* Select and set (if specified) the character encoding to be used to
* interpret request parameters for this request.
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throws IOException, ServletException {

request.setCharacterEncoding(ecodeing);
response.setCharacterEncoding(ecodeing);
// 传递控制到下一个过滤器
chain.doFilter(request, response);
}

public void init(FilterConfig filterConfig) throws ServletException {
        ecodeing=filterConfig.getInitParameter("encoding");
}
}


还有tomcat里面的servel.xml中不要忘记设置这个<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />
发表于 2007-4-5 23:11:10 | 显示全部楼层
其实只要在安装MYSQL的时候把编码设置为GBK,然后把把所有相关的值都改为 GBK ,这样就不会出现乱码了
发表于 2007-4-7 23:05:07 | 显示全部楼层
1。设置过滤器
2。数据库的编码为eucgb(sybase)
3。tomcat配置uricoding为gb2312
发表于 2007-4-7 23:47:20 | 显示全部楼层
发表于 2007-4-16 12:00:25 | 显示全部楼层
1、使用gb2312编码,变更mysql的数据库编码字符集。cmd模式下用mysql --default-character-set=gb2312 -u root -p进入,然后再每个建表语句后增加default character set gb2312;

  重新建立数据表。

  值得注意的地方是:applicationContext.xml中的数据库连接必须设置为<property name="url"><value>jdbc:mysql://localhost/struts?useUnicode=true&characterEncoding=gb2312</value></property>,这样插入的才是正常的中文,否则就是乱码。

  2、在进行数据保存之前进行gb2312到iso8859-1编码的转换,applicationContext.xml中的数据库连接必须设置为<property name="url"><value>jdbc:mysql://localhost/struts</value></property>,这样插入的才是正常的中文,否则就是乱码。

  它们相同的地方是在用jsp进行中文内容填加时,都要进行gb2312到iso8859-1编码的转换:

String name;
name=trans(request.getParameter("name"));

String trans(String chi)
{
 String result = null;
 byte temp [];
 try
 {
  temp=chi.getBytes("iso-8859-1");
  result = new String(temp);
 }
 catch(java.io.UnsupportedEncodingException e)
 {
  System.out.println (e.toString());
 }
 return result;
}
String trans(Object chi)
{
 return trans(chi.toString());
}
发表于 2007-4-20 13:33:43 | 显示全部楼层
Hibernate3.0不支持中文参数,如果把语句改成参数话形式就可以解决
您需要登录后才可以回帖 登录 | 建立账号

本版积分规则

 
QQ在线咨询

QQ|小黑屋|手机版|Archiver|美河学习在线 ( 浙网备33020302000026号 )

GMT+8, 2025-5-4 05:40

Powered by Discuz!

© 2001-2025 eimhe.com.

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