Java数据库字符国际化
我的方法:通过研究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完全可以通过在配置信息中动态定义。
您可能感兴趣的文章:
Java数据库字符国际化
Java 实例
PHP的前景和趋势
python与java用途区别有哪些
PHP开发有哪些难点
php 操作IP地址库QQWry.dat的实例分享
PostgreSQL从菜鸟到专家系列教程(1)PostgreSQL介绍
解决PHP中文乱码的4项小技巧
JDBC 高级数据类型的应用
Java中Locale.getDefault()方法获取本地国家代码