漫谈Java中的中文问题(二)

2014-11-23 20:14:36 · 作者: · 浏览: 12
所存在的中文问题也就不太难理解了。

  目前,大部分的JDBC驱动程序并不是针对中文系统来设计的(中文数据大都采用ISO-8859-1编码方式),所以在数据读写过程中往往需要字符编码的转化。

  如果系统运行在中文操作系统平台下,则:

  1) 中文字符的读入,可以采用如下的代码:

strChinese= new String(String(rs.getObject(j).toString().getBytes("ISO-8859-1"));

  对于Win2000平台下,采用Weblogic 6.0所提供的JDBC驱动来读入中文代码可如下来编写(例子中进行了字符运算):

Driver myDriver = (Driver) Class.forName("weblogic.jdbc.mssqlserver4.Driver").newInstance();

conn = myDriver.connect("jdbc:weblogic:mssqlserver4", props);

conn.setCatalog("labmanager");

Statement st = conn.createStatement();

file://execute a query

String testStr;

String testTempStr = new String() ;

testStr = new String(testTempStr.getBytes("ISO-8859-1"));//编码转化

DatabaseMetaData DBMetaData =conn.getMetaData();

ResultSet rs = DBMetaData.getTables(null, null,null,new String[]{"TABLE"} );

while (rs.next()){

for(int j=1; j<=rs.getMetaData().getColumnCount(); j++){

testStr = testStr +String(rs.getObject(j).toString().getBytes("ISO-8859-1"));

}

}


  2) 中文的输出。中文的输出与读入正好是个逆过程。我们需要将字符的系统缺省编码转化为JDBC支持的ISO-8859-1编码。代码可以如下编写:

tempBytes=strInput.getText().getBytes();

SQLstr=new String(tempBytes,”ISO-8859-1”);

  需要注意的是,不同的JDBC驱动对相同的数据库的支持并不同,而同一类JDBC驱动对不同的数据库的支持也不相同,也就是说我们的字符转化代码在JDBC驱动改变的时候必须作必要的测试才能确定其是否工作正常,不然我们反而会变成了画蛇添足。例如对于i-net 的Una 2000 Driver Version 2.03 for MS SQL Server,我们根本就不需要做任何的编码转化就可以实现中文的正常操作。但是,由于很多的JDBC的驱动并没有明确的给出其对中文字符的支持情况,所以建议在使用JDBC时都作一下测试。

  结论

  事实上,