文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发Java关于Java编程的中文问题的几条分析原则
精品推荐
特别推荐
·实例讲解:Java中的SOAP技术
·Java语言出现的背景 影响及前景
·Java精华积累:初学者都应该搞懂的问题
·Java多媒体框架设计自动播放机实例详解
·如何有效防止Java程序源码被人偷窥?
·Cell插件在J2EE系统中的应用
·初学者想学Hibernate,初级基础教程
·Java语言实现支持视频点播的WEB服务器
·关于Java编程的中文问题的几条分析原则
·确保J2ME无线移动商业应用程序的安全性
·Java开源技术:Eclipse的使用技巧详解
·新手入门:Java中的修饰词使用方法总结
·JAVA开发者应该去的20个英文网站
·使用JDBC创建数据库访问程序
·JDK的命令详解
·Java学习从入门到精通(附FAQ)
·Tomcat性能调整
·JSF:Java中面向Web开发的生旦净末丑
·对Java语言入门初学者的一些建议
·Java技术的新方向
热点TOP10
·实例讲解:Java中的SOAP技术
·用Java实现SMTP服务器
·用Java编写的记事本程序(2)
·Java语言出现的背景 影响及前景
·Java语言实现支持视频点播的WEB服务器
·运用Jakarta Struts的七大实战心法(1)
·Tomcat性能调整
·Java多媒体框架设计自动播放机实例详解
·详细解析Java中抽象类和接口的区别
·深入研究Servlet线程安全性问题
·用Java编写的记事本程序(3)
·用Java编写的记事本程序(1)
·Liferay中整合tinyMCE详解
·《精通SOA:基于服务总线的Struts+EJB+Web Service整合应用开发》目录
·Eclipse上的Tomcat插件安装和调试
·3D编程指南第一部分:快速进入移动JAVA 3D编程世界
·用java编写的小游戏源代码分析
·图解JBuilderX安装与实践
·Java精华积累:初学者都应该搞懂的问题
·Java技术的新方向

关于Java编程的中文问题的几条分析原则

日期:2007年7月18日 作者: 查看:[大字体 中字体 小字体]


尽管关于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应用,我们可以通过<%@ page contentType="text/html; charset=GBK" %>或<%@ page contentType="text/html; charset=GB2312" %>来定义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] [3] 下一页 




上一篇:保障 IIS Web 服务器安全堵住一切漏洞

下一篇:局域网受到ARP欺骗攻击时的解决方法介绍

关于Java编程的中文问题的几条分析原则 相关文章:
·XP系统运行慢?小编自用7招解决
·编写简单的中文分词程序
·TCP/IP编程实现远程文件传输
·socket编程原理
·Beej的网络socket编程指南
·如何用C#编写文本编辑器
·ASP.NET2.0下含有DropDownList的GridView编辑、删除的完整例子!
·用ASP编写网上调查投票系统
·asp.net程序中最常用的三十三种编程代码
·Windows黑客编程基础
关于Java编程的中文问题的几条分析原则 相关软件:
·名片编辑专家V3.0 绿色特别版
·C++编程思想
·Windows环境下32位汇编语言程序设计
·功能较强的一个FLASH编辑器
·新编日语共四册mp3
·UNIX环境高级编程
·《红色警戒2》地图编辑器
·新编VB6.0 教程配套教学光盘
·shell编程和unix命令
·Visual C++.NET深入编程电子版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn