hibernate + mysql 查询 中文字符窜数据 出现乱玛 "?" 怎么解决!!听有人说 要改数据库的字符编码就可以了 怎么在 myeclipse 中设置;如果不行 还有什么办法 越简单越好, 我是在 hibernate 项目中调用 mysql;
解决方案 »
- java数组问题,循环问题
- 求一个时间转换的问题???
- SSH整合下用动态验证问题,3天了。
- 求教个SQ查询L效率问题
- jsp 重定向 同时 post 数据
- No Dialect mapping for JDBC type: -1这个问题要怎么解决?
- 急求!! IFRAME框架里,ie自动完成历史窗口远离input框
- myEclipse的3.6能用在eclipse的2.1上吗?
- 请教一下,我在我的JSP页面读XML文件,为什么读的路径总在TOMCAT4。0的根目录下,我如果想在页面下来读要怎么做?
- struts2如何获取前台页面的list
- struts 国际化问题············
- tomcat 虚拟目录怎么配置
我分析下
一你的数据库里原本的中文是乱码(可能姓不大),没办法解决。
二 数据库的中文以及查询都正确,就是输出中文的时候变乱码,解决方法
在jsp中加入 <%@ page language="java" pageEncoding="GBK"%>
三 数据库的中文以及输出都正确,就是用关键字中文查询有问题,解决方法,过滤器
建立过略器
package 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;public class setGBK implements Filter { public void destroy() {
// TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding("GBK");
arg2.doFilter(arg0, arg1); } public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub }}
在配置文件 web.xml中配置过滤器
<filter>
<filter-name>setGBK</filter-name>
<filter-class>filter.setGBK</filter-class>
</filter>
<filter-mapping>
<filter-name>setGBK</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<url-pattern>*.do</url-pattern>看你自己的需要也可以配置
<property name="connection.url">
jdbc:mysql://localhost:3306/hunantour?useUnicode=true&characterEncoding=GBK
</property>
jdbc:mysql://localhost:3306/em?useUnicode=true&characterEncoding=gbk
就可以了
调用mysql 的表, 表中的数据肯定是中文 类型是 varchar, 所以上面有人说的+ filter 或者+一条什么JSP标签的都行不
通, 还有
在hibernate的配置中试下这样:
<property name="connection.url">
jdbc:mysql://localhost:3306/hunantour?useUnicode=true&characterEncoding=GBK
</property> 也不行 试过了,我的java 代码是:
public class query_test extends TestCase{
public void query1() {
Session session = HibernateUtil.getSession();
try {
session.beginTransaction();
Query query = session.createQuery("select name from Class1");
List list = query.list();
for(Iterator ite = list.iterator(); ite.hasNext();) {
String name = (String) ite.next();
name = new String(name.getBytes("iso-8859-1"), "gb2312");
System.out.println(name);
}
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtil.closeSession(session);
}
}
}
这是mysql表:
+----+----------------+
| id | name |
+----+----------------+
| 1 | 班级1 |
| 2 | 班级2 |
| 3 | 班级3 |
| 4 | 班级4 |
| 5 | 班级5 |
| 6 | 班级6 |
| 7 | 班级7 |
| 8 | 班级8 |
| 9 | 班级9 |