今天碰到一个问题,使用ibatis框架访问编码为US7ASCII的oracle数据中文乱码,

找了很久终于有了解决方案
首先 SqlMap-Config.xml按如下配置
<sqlMapConfig>

    <!--<sqlMap>元素用于包括SQL Map映射文件和其他的SQL Map配置文件。 -->
    <settings lazyLoadingEnabled="true" useStatementNamespaces="true" />
    <typeAlias type="com.jerry.spring.util.EncodingStringTypeHandlerCallback" alias="ENCODE"/>  
     <typeHandler callback="ENCODE" javaType="java.lang.String"/> 
    <sqlMap resource="com/jerry/spring/model/User_SqlMap.xml" />
    <sqlMap resource="com/jerry/spring/model/TimeRecord_SqlMap.xml" />

</sqlMapConfig>

EncodingStringTypeHandlerCallback
 
EncodingStringTypeHandlerCallback类继承TypeHandlerCallback接口
import java.sql.SQLException;
 
import com.ibatis.sqlmap.client.extensions.ParameterSetter;
import com.ibatis.sqlmap.client.extensions.ResultGetter;
import com.ibatis.sqlmap.client.extensions.TypeHandlerCallback;
 
public class EncodingStringTypeHandlerCallback implements TypeHandlerCallback
{
   // boolean flag = InitParam.getDbEncoding("DbEncoding");
 
    boolean flag = true;
    public Object getResult(ResultGetter arg0) throws SQLException {
        //西文字符集转换
        if(flag){
            return StringUtil.ISOtoGBK(arg0.getString());
        }
        return arg0.getString();
     }
 
     public void setParameter(ParameterSetter setter, Object arg1) throws SQLException {
        if(arg1 instanceof String)
        {
          //西文字符集转换
            if(flag){
                setter.setString(StringUtil.GBKtoISO((String)arg1));
            }
            else{
                setter.setString((String)arg1);
            }
        }
     }
     public Object valueOf(String arg0) {
         //西文字符集转换
         if(flag){
             return StringUtil.ISOtoGBK(arg0);
         }
        return arg0;
     }

}  

 

StringUtil 

public class StringUtil {
    public static String ISOtoGBK(String s) { 
        if (s == null || (s.trim()).equals(""))
            return s;
        try {    
            s = new String(s.getBytes("ISO8859-1"), "GB2312");    
        } catch (Exception e) {    
        }    
        return s;    
    }  
    
    public static String GBKtoISO(String s) {   
        if (s == null || (s.trim()).equals(""))
            return s;
        try {    
            s = new String(s.getBytes("GBK"), "iso-8859-1");    
        } catch (Exception e) {    
        }    
        return s;    
    }  
}
 
至此中文乱码问题顺利解决
欢饮关注个人开源代码
https://github.com/zuifengke/windy
代码在MedQCWebApp项目下
 
 
 
 
 
 
 
 

ibatis访问oracle数据库US7ASCII中文乱码问题的更多相关文章

  1. 将现有的sql脚本导入 Oracle 数据库,中文乱码问题

    将现有的sql 脚本导入 Oracle数据库 比如 在windows 系统下,可以写一个 bat 来实现直接导入 如:bat 中的内容如下,logs.log 将会记录执行日志 sqlplus user ...

  2. (ASP.NET)C#连接Oracle数据库示例(中文乱码问题解决)

    接手了一个遗留的ASP.NET系统,数据库用的是Oracle,以前没搞过.NET和Oracle数据库,数据库搞了半天才解决乱码问题,在此做个笔记备忘. 1.下载安装ODAC 1)请去Oracle官网下 ...

  3. oracle 数据库插入中文乱码

    一. 查询数据库编码 select userenv('language') from dual; 查询服务器编码 select * from v$nls_parameters; 推出sql查询系统编码 ...

  4. 向Oracle数据库插入中文乱码解决方法

    解决方法:    第一步:sqlplus下执行:select userenv('language') from dual;//查看oracle字符集     注:如果oracle字符集与后台代码设置的 ...

  5. linux下occi操作oracle数据库,中文乱码的问题

    转载:http://www.linuxidc.com/Linux/2008-02/11238.htm 前几日调通了OCI连接数据库的问题后,用Oracle自带的例子测试了一下,能正常读取数据(都是英文 ...

  6. PL/SQL连接Oracle数据库,中文乱码,显示问号

    问题描述: 登陆PL/SQL,执行SQL语句后,输出的中文标题显示成问号????:条件包含中文,则无数据.         如果不是中文,需要修改注册表值,方法如下: 进入注册表:Win+r,输入re ...

  7. 使用OCCI操作Oracle数据库写入中文乱码

    解决方法如下: oracle::occi::Environment *pOracleOcciEnv = Environment::createEnvironment(oracle::occi::Env ...

  8. C++使用ocilib访问oracle数据库

    引用: http://blog.csdn.net/u011311985/article/details/51221898 测试程序我放到 http://download.csdn.NET/detail ...

  9. 解决在Linux下安装Oracle时的中文乱码问题

    本帖最后由 TsengYia 于 2012-2-22 17:06 编辑 解决在Linux下安装Oracle时的中文乱码问题 操作系统:Red Hat Enterprise Linux 6.1数据库:O ...

随机推荐

  1. [Effective C++ --008]别让异常逃离析构函数

    这章非常容易理解:因为C++并不禁止析构函数吐出异常,只是不鼓励这样做而已. 一.原因 假设我们有10个装着鸡蛋的容器,而且现在我们还想着把它在析构函数打烂. class Egg { public : ...

  2. Android 框架修炼-自己开发高效异步图片加载框架

    一.概述 目前为止,第三方的图片加载框架挺多的,比如UIL , Volley Imageloader等等.但是最好能知道实现原理,所以下面就来看看设计并开发一个加载网络.本地的图片框架. 总所周知,图 ...

  3. SpringAOP的注解方式

    AOP(注解)[理解][应用][重点] 1.AOP注解配置流程 A.开启AOP配置支持注解@aspectj 核心配置文件中添加以下配置,功能等同于注解配置Bean的自动扫描路径 <aop:asp ...

  4. Spark Shuffle实现

    Apache Spark探秘:Spark Shuffle实现 http://dongxicheng.org/framework-on-yarn/apache-spark-shuffle-details ...

  5. PL/SQL在Oracle服务器上连接出错

    今天在Oracle服务器上使用PL/SQL连接Oracle软件的时候出现了错误,错误如下: 具体的解决办法如下: 需要下载32位的Oracle Client,具体的步骤如下:登录Oracle官方网站 ...

  6. C#学习笔记15:字符串、文件、目录的操作方法

    字符串:不可变性 String str=”abcdf”; 将字符串转换为char数组:ToCharArray(); Char[] ch=str.ToCharAarray(); 将char数组转换为字符 ...

  7. AndroidStudio学习记录

    AndroidStudio学习记录 1. 插件的使用. plugins.jetbrains.com插件网站. 2. 目录介绍: 1.Studio中有Project和Module的概念,前面说到Stud ...

  8. Android 内存溢出管理与测试

    今天发现正在做的项目,时不时的会报错:dalvikvm heap out of memory on a 7458832-byte allocation (堆分配的内存溢出) 为什么会内存溢出呢?我以前 ...

  9. VMware下LINUX的虚拟机增加磁盘空间

    先关闭虚拟机电源,做如下设置:“ 虚拟机”--“虚拟机设置”--“磁盘”--“扩展” 可以随意添加你需要增到到的磁盘大小(如15Gb,表示磁盘总量,包含原来的磁盘容量); 再重启电源进入系统做如下步骤 ...

  10. asp:第三平台登陆

    第三平台登陆接口申请网址: http://open.51094.com/ 文档: 第三方合作登录平台使用说明 为方便更多的开发朋友,本人特将当前市面上所有支持第三方联合登录的接口集为一体,以前需要多次 ...