利用ibatis的自定义类型解决中文乱码问题
来源:互联网 发布:java语言书籍推荐 知乎 编辑:程序博客网 时间:2024/05/16 04:36
也许大家也遇到过数据库的字符集和程序的字符集不一致而导致查询出来或者更新插入的中文数据是乱码的问题。
我们项目使用的是ibatis作为data access层,对于中文数据也出现了乱码问题。一开始的想法是后台取出来的数据
或者前台保存到数据库的数据每次都手动转换编码。但是这样的方法不仅对于coding,而且对于后期数据库变换也要
改动程序,绝对不是一个很好的解决方法。
后来我的想法是希望能在ibatis那一层就把数据做自动处理,经过查看资料,发现ibatis提供了自定义类型处理器。
所以我的想法就是利用自动类型处理,把所有String类型的数据进行编码。这样的话就可以在不改动其他代码的情况
下,解决问题。
以下是类型处理器的代码:public class EncodingStringTypeHandlerCallback implements TypeHandlerCallback {
public void setParameter(ParameterSetter setter, Object parameter)
throws SQLException {
setter.setString(encoding((String) setter, "GB2312", "ISO-8859-1"));
}
public Object getResult(ResultGetter getter) throws SQLException {
return encoding(getter.getString(), "ISO-8859-1", "GB2312");
}
public Object valueOf(String s) {
return encoding(getter.getString(), "ISO-8859-1", "GB2312");
}
public String encoding(String s, String inputEncoding, String outputEncoding) {
if (S != null) {
return new String(s.getBytes(inputEncoding), outputEncoding);
}
return null;
}
}
在实际应用中可以把编码集作为config文件的属性,在EncodingStringTypeHandlerCallback的静态初始块
读入其中的某两个变量中。这样的话,如果我们需要改变数据库的时候我们只需要改变config文件的编码集修改一下就可以了。
当你把类型处理器写完的时候只要在sqlMap.xml中加上以下代码:
<typeHandler callback="com.leo.EncodingStringTypeHandlerCallback" javaType="string"/>
这样,我们就可以在系统运行的时候自动对所有String进行编码处理了。
- 利用ibatis的自定义类型解决中文乱码问题
- ibatis+mysql的中文乱码问题
- 利用TOMCAT解决WEB开发中中文乱码的问题
- SQLServerVarchar类型字段中文乱码问题的解决
- jsp利用过滤器解决中文乱码问题
- javaWeb利用Filter解决中文乱码问题
- 中文乱码问题的解决
- 中文乱码问题的解决
- url 参数传递中文乱码问题 即<a href> 利用 js 的 encodeURI解决中文乱码问题
- JAVA+ibatis+DB2:blob类型字段如何处理(解决中文乱码)
- Struts中利用filter解决中文乱码问题
- 利用tomcat解决get提交中文乱码问题
- 如何利用URIEncoding和useBodyEncodingForURI解决tomcat中文乱码问题
- 解决 遇到的 ibatis连接oracle 乱码问题
- 使CentOS6.5中文本编辑器支持GB18030/GBK/GB2312 等类型的中文编码,解决中文显示乱码问题
- 解决中文乱码问题
- 解决中文乱码问题
- 解决中文乱码问题
- 让人不知所以的IE(The Puzzled IE)
- 如何用VB获得Windows各类系统目录
- XUL程序中访问文件,非常简单,非常痛苦
- 论文初稿出炉
- Invalidate()与UpdateAllViews()的区别(转载)
- 利用ibatis的自定义类型解决中文乱码问题
- 删除了最后的痕迹
- 山重水复疑无路,柳暗花明又一村。---找工作感想
- Talking About Visual C++
- jProxy-打造最及时的免费代理服务器库
- java 程序习惯
- InvalidateRect()小解
- 安装程序的制作
- 对JAVA语言的十个常见误解