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

          疑問:因為UTF-8是配置文件的缺省編碼,通常很少改動,所以這種現象應該還有其他人發現才對。有時間調查一下。
          成本:解決該問題約花多半天時間。其中相當部分浪費在一個莫名其妙的org.xml.sax.SAXParseException: Content is not allowed in prolog錯誤上。郁悶。


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

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


          網站導航:
           
          主站蜘蛛池模板: 宁明县| 会理县| 易门县| 荆州市| 阿鲁科尔沁旗| 凤台县| 南江县| 蓬安县| 景泰县| 青岛市| 石渠县| 大竹县| 和平县| 小金县| 湖北省| 布尔津县| 沈阳市| 清原| 灵山县| 普安县| 利津县| 大城县| 湄潭县| 潜山县| 永登县| 青浦区| 阿克陶县| 红安县| 紫阳县| 虹口区| 资源县| 保山市| 兴和县| 庆云县| 北流市| 旬邑县| 酉阳| 建昌县| 喀喇沁旗| 天镇县| 宝应县|