我把一个变量的值设置成中文就没法从数据库中取出对应的记录,而设置成英文就可以。怎么回事啊? funcName=new String("...","utf-8");.....这个试试 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 這個以前也遇到過的,好象是用什麽8859-1什麽進行轉換的String str=new String("")funcname=(String)str.getBytes(); 编码问题String funcname = "查询制定城市天气";funcname = new String(funcname.getBytes("iso8859-1"),"gb2312");这样试试看。当然如果你不是采用后面的编码方式,就改成你的编码方式。 jsp中: funcname="查询制定城市天气"; funcname = new String(funcname.getBytes("iso8859-1"),"gb2312");list=qp.getDatas(funcname);it=list.iterator(); while(it.hasNext()) {AbstractGiisQueryConfig results=(AbstractGiisQueryConfig)it.next(); %><td nowrap align="center" bgcolor="#426388"><font color="#FFFFFF"><%=results.getFieldDesc()%></font></td> <%}%>public List getDatas(String p0){ Session session = null; Transaction tx = null; try { session = HibernateSessionFactory.getSession(); tx = session.beginTransaction(); String hql="from GiisQueryConfig as config where config.funcName = '"+p0+"' order by config.fieldName";//tableName = '"+funcname+"'"; List list = session.createQuery(hql).list(); tx.commit(); return list; } catch (HibernateException e) { e.printStackTrace(); if (tx != null) try { tx.rollback(); } catch (HibernateException e1) { e1.printStackTrace(); } return null; } finally { try { if (session != null) HibernateSessionFactory.closeSession(); } catch (HibernateException e1) { e1.printStackTrace(); } } }就是不显示啊。如果将funcname="查询制定城市天气";改成"SWeather",将getDatas(String p0)中String hql="from GiisQueryConfig as config where config.funcName = '"+p0+"' order by config.fieldName";的config.funcName 改成config.tableName。就可以,找个字段值为英文的就可以!郁闷死了! 有没有人能给我看看啊?iso8859-1 gb2312 gbk utf-8我都试了,就是不行啊! String hql把它getBytes();看看行不? tonyyl(没有比事实更真实的了) :不明白你的意思。是这样:String hql="from GiisQueryConfig as config where config.funcName = '"+p0+"' order by config.fieldName".getBytes();? 很简单,hql=new String("...")+p0+new String("...");那hql是什么便码的?另外,你这种sql是编程大忌,很容易被人注入攻击,你看看...+op0+" and 1=1"能不能用? 谢谢你给我指出问题!因为刚接触编程所以好多问题考虑不周!hql=new String("...")+p0+new String("...");这是什么意思啊? 你用的可能是nchar类型的字段nchar字段如果存储的是中文的话,后面默认会有一个空格(也不一定是一个空格,可能是其他什么编码)你把字段读出来看看,是不是有个空格?用str.trim()去掉空格看看,是不是就没有了? 比如rs.getString("info")其中info是字段名,字段类型是定长nchar那么得到的是“查询制定城市天气 ”(有个空格在后面)而不是“查询制定城市天气”(后面没空格)我想会不会是因为这个影响?所以一般我都是((String)rs.getString("info")).trim()这样就去掉了那个空格。 tonyyl(没有比事实更真实的了) 要防止被注入,有什么好点办法没?我都是直接去掉参数中的空格,如果是id的话判断是否为整数不知道这样是不是很傻? Tameway(Tameway) :我不是从数据库中取数据时显示乱码,而是利用变量与数据库字段比较查询记录时出的问题。如果变量是中文就会取不出记录,相反是英文就可以! 关于Configuration问题 弱弱的问一下,下载时提供的文件各代表什么? struts2怎么用validation框架校验下拉列表? 字符编码已经都一样了,怎么还。。。 org.hibernate.SessionException: Session is closed! jsp页面调用power point 一个最简单的hibernate出错,出错信息如下 困难的抉择:我该选择哪一家公司? 菜鸟提问! JFreeChart 乱码问题 tomcat启动问题 一个关于jdbc操作sqlserver2005的问题
funcname=(String)str.getBytes();
funcname = new String(funcname.getBytes("iso8859-1"),"gb2312");这样试试看。当然如果你不是采用后面的编码方式,就改成你的编码方式。
funcname="查询制定城市天气";
funcname = new String(funcname.getBytes("iso8859-1"),"gb2312");
list=qp.getDatas(funcname);
it=list.iterator();
while(it.hasNext())
{
AbstractGiisQueryConfig results=(AbstractGiisQueryConfig)it.next(); %>
<td nowrap align="center" bgcolor="#426388">
<font color="#FFFFFF"><%=results.getFieldDesc()%></font></td> <%}%>
public List getDatas(String p0){
Session session = null;
Transaction tx = null;
try {
session = HibernateSessionFactory.getSession();
tx = session.beginTransaction();
String hql="from GiisQueryConfig as config where config.funcName = '"+p0+"' order by config.fieldName";
//tableName = '"+funcname+"'";
List list = session.createQuery(hql).list();
tx.commit();
return list;
} catch (HibernateException e) {
e.printStackTrace();
if (tx != null)
try {
tx.rollback();
} catch (HibernateException e1) {
e1.printStackTrace();
}
return null;
} finally {
try {
if (session != null)
HibernateSessionFactory.closeSession();
} catch (HibernateException e1) {
e1.printStackTrace();
}
}
}
就是不显示啊。如果将funcname="查询制定城市天气";改成"SWeather",将getDatas(String p0)中String hql="from GiisQueryConfig as config where config.funcName = '"+p0+"' order by config.fieldName";的config.funcName 改成config.tableName。就可以,找个字段值为英文的就可以!
郁闷死了!
String hql="from GiisQueryConfig as config where config.funcName = '"+p0+"' order by config.fieldName".getBytes();?
另外,你这种sql是编程大忌,很容易被人注入攻击,你看看...+op0+" and 1=1"能不能用?
hql=new String("...")+p0+new String("...");这是什么意思啊?
nchar字段如果存储的是中文的话,后面默认会有一个空格(也不一定是一个空格,可能是其他什么编码)
你把字段读出来看看,是不是有个空格?
用str.trim()去掉空格看看,是不是就没有了?
其中info是字段名,字段类型是定长nchar
那么得到的是“查询制定城市天气 ”(有个空格在后面)
而不是“查询制定城市天气”(后面没空格)我想会不会是因为这个影响?
所以一般我都是((String)rs.getString("info")).trim()
这样就去掉了那个空格。
我都是直接去掉参数中的空格,如果是id的话判断是否为整数不知道这样是不是很傻?
我不是从数据库中取数据时显示乱码,而是利用变量与数据库字段比较查询记录时出的问题。如果变量是中文就会取不出记录,相反是英文就可以!