Jquery中文網 www.prqmtc.live
Jquery中文網 >  腳本編程  >  java  >  正文 Java數據庫字符國際化

Java數據庫字符國際化

發布時間:2019-10-09   編輯:www.prqmtc.live
jquery中文網為您提供Java數據庫字符國際化等資源,歡迎您收藏本站,我們將為您提供最新的Java數據庫字符國際化資源
<script>ec(2);</script>
數據庫字符國際化是大家提問最多的問題,例如MySQL數據庫大家可能在JDBC-URL添加useUnicode=true&CharacterEncoding=GBK作為中文支持的基本條件。但這有時破壞了數據的完整性,如果某些人粗心大意,就會導致數據編碼錯誤,產生亂碼。因此,我們需要一些手段在程序內部進行編碼處理。人們一般通過在應用上使用 String(bytes:byte[], enc:String)/String.getBytes(enc:String)進行字符串編解碼,這樣做雖然易懂,但是如果遇到大字段表格,手動編碼時費時費力。
我的方法:通過研究JDK類庫,可以感覺到多層處理機制在數據處理上的優越性。我們完全有可能在數據庫上建立一個中間層用于字符的國際化處理,我就是這么做的。仔細研究一下JDBC操作數據庫出現字符編碼問題的根源,很容易發現多數情況是ResultSet的幾個String方法在作怪,因此我們就完全可以編寫一個ResultSet中間層進行國際化處理,源碼如下:
public class I18nResultSet implements ResultSet{ private String encoding; private ResultSet rs; public I18nResultSet(ResultSet rs, String encoding) throws java.io.UnsupportedEncodingException{ //檢查該編碼名稱是否被系統支持。
  "".getBytes(encoding); this.rs = rs; this.encoding = encoding; } … … //以下幾個方法是進行String字符串的重編碼. public String getString(int index) throws SQLException{ String data = null; try{ data = new String(rs.getBytes(index), encoding); }catch(java.io.UnsupportedEncodingException uee){} } public String getString(Stirng field) throws SQLException{ String data = null; try{ data = new String(rs.getBytes(field), encoding); }catch(java.io.UnsupportedEncodingException uee){} } public void updateString(int index, String value) throws SQLException{ try{ rs.updateBytes(index, value.getBytes(encoding)); }catch(java.io.UnsupportedEncodingException uee){} } public void updateString(String field, String value) throws SQLException{ try{ rs.updateBytes(field, value.getBytes(encoding)); }catch(java.io.UnsupportedEncodingException uee){} } … …}
可以看出, 所有的String操作都使用特定編碼的字節數組進行存取,這樣通過定義encoding的值實現數據庫存取數據編碼的一致性,且encoding完全可以通過在配置信息中動態定義。

您可能感興趣的文章:
PostgreSQL從菜鳥到專家系列教程(1)PostgreSQL介紹
PostgreSQL從菜鳥到專家系列教程(5)什么是數據庫管理系統
PostgreSQL從菜鳥到專家系列教程(3)數據庫的數據存取設計
PostgreSQL從菜鳥到專家系列教程(8)數據定義 字符數據類型
jQuery jqgrid 對含特殊字符json 數據的 Java 處理方法
PHP程序員最容易犯的11個MySQL錯誤
javascript 格式化時間日期函數代碼
vbscript基礎教程-數組
NoSQL數據庫之MongoDB入門詳解
學習php的防SQL注入函數:mysql_real_escape_string

[關閉]
一分赛车计划app