论坛首页 入门技术论坛

iBatis的SQL语句中使用中文时,出现乱码,请问如何解决?

浏览 12476 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-06-01  
例如,在XML中写SQL

select '测试' as col from dual

查询出来的结果是乱码
   发表时间:2007-06-01  
xml编码问题咯
反正我们是把非英文全放在变量里传过去了

你要是不传就在文件编码上下下功夫吧
0 请登录后投票
   发表时间:2007-06-01  
<![CDATA[
    SELECT .......
]]>
0 请登录后投票
   发表时间:2007-06-01  
ddandyy 写道
xml编码问题咯
反正我们是把非英文全放在变量里传过去了

你要是不传就在文件编码上下下功夫吧

是啊,干什么要硬编码中文在xml的查询语句里呢?
要不就把xml头部的encoding改成encoding="gbk" 来试试看, 当然也必须确保此时的xml文件确实是gbk编码的。
0 请登录后投票
   发表时间:2007-06-04  
spiritfrog 写道
ddandyy 写道
xml编码问题咯
反正我们是把非英文全放在变量里传过去了

你要是不传就在文件编码上下下功夫吧

是啊,干什么要硬编码中文在xml的查询语句里呢?
要不就把xml头部的encoding改成encoding="gbk" 来试试看, 当然也必须确保此时的xml文件确实是gbk编码的。




主要是想把代码替换为文字,例如


select 
case status 
    when '1' then '已提交' 
    when '0' then '草稿'  
end statusCn



其实,现在是在查询出结果后替代原内容(利用hashmap),我就是想知道有没有更简单的方式

另外,XML是UTF-8的

<?xml version="1.0" encoding="UTF-8"?>
文件也是UTF-8的
0 请登录后投票
   发表时间:2007-06-08  
在项目中也出现了这个问题
.xml定义文件中是如下:
select count(*)
   from u5standardization d
   where d.son_id = #id# 
	and d.son_type ='企标'

上面的这个SQL语句,产生的结果:
select count(*)     
from u5standardization d    
where d.son_id = ?       
and d.son_type ='浼佹爣'

然后,我对xml文件 的抬头:
<?xml version="1.0" encoding="UTF-8"?>
改为:
<?xml version="1.0" encoding="gbk"?>
这样输出的结果就正常了
select count(*)     
from u5standardization d    
where d.son_id = ?       
and d.son_type ='企标'

btw:不知道改为gbk,会有什么其他的不良影响
0 请登录后投票
   发表时间:2007-06-08  
应该不会有影响的,这个问题就是XML的字符集问题.
具体为什么不会有影响也没有仔细的研究过.在网上也看过一些有关的贴子
不过个人认为没有必要掌握的那么细吧!
0 请登录后投票
   发表时间:2007-06-09  
其实,全部都用英文比较好,中文问题还是挺麻烦的,还挺多。

0 请登录后投票
   发表时间:2007-06-12  
最近在iBatis网站上看到解决办法了
是读xml的时候出了问题

要求版本2.3

Resources.setCharset(Charset.forName("UTF-8"));

Reader reader = Resources.geResources.setCharset(Charset.forName("UTF-8"));
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics