今天碰到一个问题,使用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. Folder and jar

  2. PHP获取远程图片并调整图像大小

    <?php /** * *函数:调整图片尺寸或生成缩略图 *修改:2013-2-15 *返回:True/False *参数: *   $Image   需要调整的图片(含路径) *   $Dw= ...

  3. linux vi 撤销重做于前进后退--转

    在vi中按u可以撤销一次操作 u   撤销上一步的操作Ctrl+r 恢复上一步被撤销的操作 注意:如果你输入“u”两次,你的文本恢复原样,那应该是你的Vim被配置在Vi兼容模式了.重做如果你撤销得太多 ...

  4. Android实现资料收藏

    1,调web浏览器 Uri myBlogUri = Uri.parse("http://xxxxx.com"); returnIt = new Intent(Intent.ACTI ...

  5. 不规则三角网(TIN)(转)

    来自:http://blog.csdn.net/kikitamoon/article/details/8217641 Ⅰ 数字高程模型(DEM) 地球表面高低起伏,呈现一种连续变化的曲面,这种曲面无法 ...

  6. iOS-label出现未知边框线的bug

    在前段时间碰到了一个问题  label上出现了一个位置的右边框  仔细查看代码发现没有指定边框 而且奇怪的是只显示右边框  其他边框没有显示 需求效果图: 实际效果图: 结构图: 通过查看结构图  可 ...

  7. 通过代码设置button中文字的对齐方式

    // button.titleLabel.textAlignment = NSTextAlignmentLeft; 这句无效 button.contentHorizontalAlignment = U ...

  8. CentOS 6.4安装搭建Tomcat 7

    1.检查java版本信息 java -versionjava version "1.7.0_65"OpenJDK Runtime Environment (rhel-2.5.1.2 ...

  9. Phantomjs安装

    环境:Centos 6.5 介绍:PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处 ...

  10. nativescript环境搭建

    参考官网 http://docs.nativescript.org/setup/ns-cli-setup/ns-setup-win.html