Java编程的中文问题的几条解析原则[Java编程]
本文“Java编程的中文问题的几条解析原则[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
固然关于Java中文问题的谈论已经相当多了,但由于Java的相关技术尺度繁多,面向Java的Web服务器、利用服务器以及JDBC数据库驱动等都没有官方的尺度,所以Java利用在处理中文时所存在的问题不但没有消逝并且随着所选用的服务器、驱动程序以及运行环境等因素的差别而改变.那么我们若何从众多现象中找出问题所在,并举行解析和办理呢?与大部份的谈论差别,本文将主要从若何猜测、发现和检查问题的角度给出倡议,帮忙开辟人员找出大概惹起问题的各种源头,从而更好地办理Java的中文问题.
引言
固然关于Java中文处理问题的谈论已不乏其数,但由于Java技术触及内容广(J2EE包含了十几种相关技术),技术供应商繁多,面向Java的Web服务器、利用服务器以及JDBC数据库驱动等都没有官方的尺度,所以Java利用在处理中文历程中出了存在固有的问题外也存在随着选用的服务器,驱动程序的差别而带来的Java中文问题的多变性,增添了问题的复杂度.那么,我们如安在这么纷繁的现象中找到问题的症结呢?
Java中文问题的普通办理办法
事实上,Java的中文问题都是由于Java利用所采取的缺省编码格局与目标大概利用所要读入字符的编码格局差别而造成的(具体拜见文献1).关于若何办理Java的中文问题,普通有四种办法:
1)挑选JDK的中文本地化版本.固然Java2 JDK的中文本地化版本(http://java.sun.com/products/jdk/1.2/chinesejdk.html)并非一个官方的版本,Sun公司也没有答应会对该本地化版本举行进级,但其仍不失为一个Java中文问题的办理筹划.
2)挑选符合的编译参数.关于Java的国际版本来讲,我们也可以在编译Java利用的时刻通过指定肯定的编码机制来实现其编译后果对中文的支持.比方,关于需求支持繁体中文和简体中文利用可以通过javac -encoding big5 sourcefile.java 和javac -encoding gb2312 sourcefile.java来编译源程序.
3)通过编程的方法实现字符编码的转换代码.通过编程的方法来办理Java的中文问题,已经成为了一种较为广泛的做法.下面就是一种最常见的字符编码转换函数,其将字符的编码格局转换为中文Windows系统的GBK编码情势.
public static String toChinese(String strvalue)
{
try{
if(strvalue==null)
return null;
else
{
strvalue=new String(strvalue.getBytes("ISO8859_1"), "GBK");
return strvalue;
}
}catch(Exception e){
return null;
}
}
4)定义字符输出集.关于JSP利用,我们可以通过或来定义JSP页面的字符输出集.当然,我们也可以通过HTML的标志来定义字符的输出集.
存在的问题
按照办法实现的方法,我们可以将以上四种办法分为两类,一类是通过操纵某些尺度大概法则来实现的办法,上面的1)、2)、4)都属于此类;一类是通过针对性的编程来实现的办法,上面所提的办法3)就属于此类.
由于办法1),2),4)是具有标准性的一类办法,所以办法对比简单,办理筹划也不具有较大的针对性,较为通用,比方我们可以采取办法2)的编译方法通过编译Java源文件来实现内码的预置,而无需考虑源码到底有哪些部份呈现了Java的中文处理问题,诸如输出乱码等等.
但是,正由于这些办法不具有针对性,办理问题的办法过于统一,所以在某些情形下,它们并不能完好地办理Java的中文问题.举一个非常常见的例子.在普通情形下,用户的Java利用常常需求与别的Java利用接口举行交互,比方通过某种版本的JDBC拜候数据库.由于JDBC的驱动所支持的编码随着供应商乃至版本的差别而差别,所以假如在数据库的输入输出历程中呈现中文不能精确处理问题时,我们需求在数据的输入和输出历程做两次恰好相反的编码转换,这关于办法1),2),4)来说,常常是无法办理的.当然,关于办法2,我们也可以通过采取一些本领使来满意上面的情形,一个最有效的办法就是尽大概将Java利用的各个部份组件化.比方我们可以通过将数据库的读入和输出代码分化在差别的源文件上来实现辨别编译,从而满意差别的字符编码要求.但是普通的程序计划都不太大概满意这种要求,因为这种程序的划分后果极大概是不公道的.比方,我们将数据库的读出和写入办法封装到一个类中是对比符合的一种计划,但假如将该类的这两个办法辨别实目前两个文件里则变得非常不公道.因此关于1),2),4)办法来说,固然实现对比简单,但却具有一些无法降服的缺陷.这也是那些实现起来相对复杂的编程办法得以风行的缘由.
相关于办法1),2),4)来说,办法3)具有更好的针对性和机动性.程序可以按照差别的情形做出机动的处理,在任何需求的地方举行字符的编码转换,但是该办法的特点也对软件的开辟人员提出了更高要求--必须可以精确的捕捉到有大概发生中文处理问题的地方,并做出精确的判断和处理.
以上是“Java编程的中文问题的几条解析原则[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |