ibatis訪問oracle資料庫US7ASCII中文亂碼問題

來源:互聯網
上載者:User

標籤:

今天碰到一個問題,使用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項目下        



來自為知筆記(Wiz)



ibatis訪問oracle資料庫US7ASCII中文亂碼問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.