項(xiàng)目中使用ibatis以及他的sql-map-config.xml配置文件。
          配置文件(包括resource引用的各個(gè)xml文件)使用了缺省UTF-8編碼。
          在sql中包含了部分雙字節(jié)字符。
          調(diào)試期間發(fā)現(xiàn)一奇怪現(xiàn)象,hard coding部分的雙字節(jié)字符在頁面端顯示時(shí)亂碼了,而從DB中檢索出來的數(shù)據(jù)卻可以正常顯示。不解。
          深入跟蹤以后才明白:ibatis使用了class loader getResourceAsReader方法。
          由于getResourceAsReader根據(jù)系統(tǒng)本地字符集自動(dòng)生成相應(yīng)的Reader,無法指定Reader的字符集。所以得到的文件內(nèi)容并沒有做正確的轉(zhuǎn)碼(UTF-8轉(zhuǎn)碼)。

          疑問:因?yàn)閁TF-8是配置文件的缺省編碼,通常很少改動(dòng),所以這種現(xiàn)象應(yīng)該還有其他人發(fā)現(xiàn)才對。有時(shí)間調(diào)查一下。
          成本:解決該問題約花多半天時(shí)間。其中相當(dāng)部分浪費(fèi)在一個(gè)莫名其妙的org.xml.sax.SAXParseException: Content is not allowed in prolog錯(cuò)誤上。郁悶。


          追記:上述問題經(jīng)查,官方論壇對應(yīng)編號為IBATIS-340, IBATIS-349。在V2.3.0中通過在com.ibatis.common.resources.Resources中追加setCharset()接口解決。

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 京山县| 眉山市| 永和县| 溆浦县| 丘北县| 定陶县| 曲阳县| 灵台县| 牙克石市| 海南省| 康保县| 浦城县| 赤壁市| 衡南县| 新津县| 雅江县| 华宁县| 正宁县| 科技| 什邡市| 会理县| 开平市| 卫辉市| 新泰市| 介休市| 囊谦县| 巧家县| 肇源县| 西吉县| 广昌县| 手机| 昌邑市| 卓尼县| 富裕县| 武胜县| 本溪| 临安市| 罗定市| 綦江县| 洛扎县| 连南|