Java编程技术中汉字问题的分析及解决 - 编程入门网
stmt = tf_input.getText();
//Before sending statement to DB server,converting it to sql statement.
dbbyte1 = sqlstmt.getBytes();
sqlstmt = newString(dbbyte1,”iso-8859-1”);
_stmt = _con.createStatement();
_stmt.executeUpdate(sqlstmt);
……
问题:如果客户机上存在CLASSPATH 指向 JDK的CLASSES.ZIP 时(称为A 情况),上述程序代码可正确执行。但是如果客户机只有浏览器,而没有 JDK 和 CLASSPATH 时(称为B 情况),则汉字无法正确转换。 我们的分析: 1.经过测试,在A 情况下,程序运行时系统的缺省编码方式为GBK 或者 GB2312 。在B 情况下,程序启动时浏览器的JAVA 控制台中出现如下错误信息:
然后系统的缺省编码方式为“8859-1”。 2.如果在转换字符串时不采用系统缺省编码方式,而是直接采用 “GBK” 或“GB2312”,则在A 情况下程序仍然可正常运行,在B 情况下,系统出现错误:
3.在客户机上,把 JDK的CLASSES.ZIP 解压后,放在另一个目录中,CLASSPATH 只包含该目录。然后一边逐步删除该目录中的.CLASS 文件,另一边运行测试程序,最后发现在一千多个 CLASS 文件中,只有一个是必不可少的,该文件是:
将该文件拷到服务器端和其它的类放在一起,并在程序的开头 IMPORT 它,在B 情况下程序仍然无法正常运行。 4.在A 情况下,如果在CLASSPTH中去掉 sun.io.CharToByteDoubleByte.class ,则程序运行时测得默认编码方式为“8859-1”,否则为“GBK” 或 “GB2312” 。 如果JDK的版本为1.2以上的话,在B 情况下遇到的问题得到了很好的解决,测试的步骤同上,有兴趣的读者可以尝试一下。 Java编程技术中汉字问题的分析及解决(3)时间:2010-04-27 IBM 段明辉Java中文问题的根源分析及解决 在简体中文MS Windows 98 + JDK 1.3 下,可以用 System.getProperties() 得到 Java运行环境的一些基本属性,类PoorChinese 可以帮助我们得到这些属性。 类PoorChinese的源代码:
执行java PoorChinese后,我们会得到: 系统变量file.encoding的值为GBK ,user.language的值为zh ,user.region的值为CN ,这些系统变量的值决定了系统默认的编码方式是GBK 。 在上述系统中,下面的代码将 GB2312 文件转换成 Big5 文件,它们能够帮助我们理解 Java中汉字编码的转化:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |