String likeName) throws UnsupportedEncodingException {
//String name = new String(likeName.getBytes("UTF-8"),"GBK");
String sql = "from OrganizationInfo org where org.name like '"+likeName+"%'";
return getHibernateTemplate().find(sql);
}
拼出来的sql条件语句字段是乱码导致查询不到记录,怎么处理?
Hibernate: select organizati0_.ID as ID, organizati0_.CODE as CODE10_, organizati0_.NAME as NAME10_, organizati0_.YJ_ORGANIZATION_CODE as YJ4_10_, organizati0_.LOGIC_CODE as LOGIC5_10_, organizati0_.ORG_TYPE as ORG6_10_, organizati0_.ORG_PERIOD_TYPE as ORG7_10_, organizati0_.PARENT_ORG_ID as PARENT8_10_, organizati0_.FITECH_FILLER as FITECH9_10_, organizati0_.FITECH_CHECKER as FITECH10_10_, organizati0_.FITECH_PRINCIPAL as FITECH11_10_, organizati0_.IS_DELETED as IS12_10_, organizati0_.conver_code1 as conver13_10_, organizati0_.conver_code2 as conver14_10_, organizati0_.conver_code3 as conver15_10_, organizati0_.ORG_FLAG as ORG16_10_, organizati0_.SUM_FLAG as SUM17_10_, organizati0_.RH_ORG_CODE as RH18_10_, organizati0_.RH_LOC_CODE as RH19_10_, organizati0_.RH_SYSTEM_CODE as RH20_10_, organizati0_.RHN_ORG_CODE as RHN21_10_, organizati0_.RHN_SYSTEM_CODE as RHN22_10_ from ORGANIZATION_INFO organizati0_ where organizati0_.NAME like '????%'
8 个解决方案
#1
界面上面的编码格式是什么呢,是不是和后台的不一致啊,跟踪进去看看是什么地方变成乱码的,找到问题原因就好办了
#2
String name = new String(likeName.getBytes("iso8859-1"),"GBK");
#3
前后台编码统一就好了
#4
String name = new String(likeName.getBytes("iso8859-1"),"GBK");
或者
String name = new String(likeName.getBytes("iso8859-1"),"UTF-8");
这个要看你设置的编码格式了
楼主的问题是中文传递乱码的问题 问题不在sql就传参的问题 楼主调试一下代码解决传参的乱码问题就好了
或者
String name = new String(likeName.getBytes("iso8859-1"),"UTF-8");
这个要看你设置的编码格式了
楼主的问题是中文传递乱码的问题 问题不在sql就传参的问题 楼主调试一下代码解决传参的乱码问题就好了
#5
首先看前台和你后台的编码是一致。如果一样就可以直接传递。如果不一致则可以使用String name = new String(likeName.getBytes("iso8859-1"),"GBK"); iso8859-1代表解码规范这个看你前台是什么编码 gbk代表再次的编码规范这个就是你后台的编码了。
#6
为什么还要把UTF-8转成GBK,统一UTF-8不是挺好?
#7
同意这样的解决方式;
#8
<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
问题解决,同样也谢谢楼上同仁的帮忙。
问题解决,同样也谢谢楼上同仁的帮忙。
#1
界面上面的编码格式是什么呢,是不是和后台的不一致啊,跟踪进去看看是什么地方变成乱码的,找到问题原因就好办了
#2
String name = new String(likeName.getBytes("iso8859-1"),"GBK");
#3
前后台编码统一就好了
#4
String name = new String(likeName.getBytes("iso8859-1"),"GBK");
或者
String name = new String(likeName.getBytes("iso8859-1"),"UTF-8");
这个要看你设置的编码格式了
楼主的问题是中文传递乱码的问题 问题不在sql就传参的问题 楼主调试一下代码解决传参的乱码问题就好了
或者
String name = new String(likeName.getBytes("iso8859-1"),"UTF-8");
这个要看你设置的编码格式了
楼主的问题是中文传递乱码的问题 问题不在sql就传参的问题 楼主调试一下代码解决传参的乱码问题就好了
#5
首先看前台和你后台的编码是一致。如果一样就可以直接传递。如果不一致则可以使用String name = new String(likeName.getBytes("iso8859-1"),"GBK"); iso8859-1代表解码规范这个看你前台是什么编码 gbk代表再次的编码规范这个就是你后台的编码了。
#6
为什么还要把UTF-8转成GBK,统一UTF-8不是挺好?
#7
同意这样的解决方式;
#8
<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
问题解决,同样也谢谢楼上同仁的帮忙。
问题解决,同样也谢谢楼上同仁的帮忙。