快速业务通道

Java编程的中文问题的几条分析原则 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-04
问过程。Java通过JDBC与数据库建立连接。对于JDBC驱动程序来说,由于目前大部分的JDBC驱动程序并不是针对中文系统而设计的(中文数据大都采用ISO-8859-1编码方式),所以一般情况下在数据读写过程中往往都需要字符编码的转化。但是我们仍建议用户在使用这些JDBC驱动时,仔细阅读它的说明。如果确实无法弄清JDBC字符数据的编码到底是什么,我们的建议是做一些必要的测试。例如下面是一组在简体中文Win2000平台下,采用Weblogic 6.0所提供的JDBC驱动从MS SQL Server2000中正确读入中文字符的代码(例子中进行了字符运算):

... Class.forName("weblogic.jdbc.mssqlserver4.Driver").newInstance(); conn = myDriver.connect("jdbc:weblogic:mssqlserver4", props); conn.setCatalog("labmanager"); Statement st = conn.createStatement(); //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"));    }   }

然而,需要注意的是,不同的JDBC驱动对相同的数据库的支持并不同,而同一类JDBC驱动对不同的数据库的支持也不相同,也就是说我们的字符转化代码在JDBC驱动改变甚至是版本变化情况下都有可能无法正确工作。例如对于上面的例子,在同样的环境下改用i-net 的Una 2000 Driver Version 2.03 for MS SQL Server时,是无法正确处理中文的。原因很简单,这个JDBC驱动本身支持的就是GBK的编码机制,所以根本就不需要做任何的编码转化。

6.必要的测试。由于Java中文问题的产生随着Web服务器,浏览器,运行环境和开发工具的不同都可能发生变化,所以为了更好的避免问题的发生,我们必须作一些针对性的测试。另外,在我们确实无法通过分析来确定Java的中文处理问题是否可能发生的情况下或者无法知道问题的发生是由于哪个环节(是Web服务器,浏览器还是JDBC数据驱动等等)引起的时候,测试工作则变得非常重要。并且我们可能需要较为全面的测试,例如对Web服务器,浏览器和JDBC数据驱动等都要做测试,这样有利于我们找出那些隐藏在多个环节协调过程中所产生的问题。

结论

事实上,Java中文处理之所以存在问题,其根本原因是由于被操作的中文字符(变量)的编码格式与目标的编码格式不同造成的,所有这些问题其实都是发生在字符的读入、输出过程中的,只要我们把握住这一环节,就可以更好的发现、分析、处理和预防Java的中文问题了。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号