网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.java开发:Swing是MVC设计的典范.
.使用EJB 3.0简化企业级Java开发二.
.第一讲 Java语言概述.
.javamail中使用发信身份验证.
.log4j--新的日志操作方法.
.JAVA对大数值的计算.
.根据应用剪裁JavaBeans(1).
.在Java2环境中应用IP地址封装对象.
.在java 中执行触发器代码、创表语.
.用JDOM处理XML文档.
.Java应用中Hibernate对多表关联查.
.Ruby,Java的劲敌.
.JAVA编程中异常问题处理方式的区.
.分享搞定的CLOB字段存取的代码.
.Java中的方法和变量在继承时的覆.
.RCP II:扩展通用工作台补充—小.
.Java Applet编程之实现显示图像.
.J2EE1.4新特性之EJB2.1的新特性.
.新手入门之Spring BeanDoc使.
.Tomcat中通过JNDI配置访问数据库.

Java繁体中文处理完全攻略(一)

发表日期:2008-1-5


  许多人用 Java 处理到中文资料时,常会出现乱码。关于 Java 和中文兼容性的问题,实在让许多程序员为此伤透脑筋,相关的问题每隔几天就会出现在网络上。为了舒缓您紧蹙的眉头,我非凡写了这系列文章,解说 Java 牵涉到文字时的内部处理方式,供读者参考。
读完本系列文章之后,不求甚解者可以治标,充分理解者可以治本。本文贵在原理解说,别光是囫囵吞枣。

  快速解决之道

  假如你目前正遭碰到 Java 和中文不兼容的问题,请你注重下面这几点,说不定问题能马上迎刃而解:

  1. 检查操作系统设定:先检查你的操作系统,确定国籍语言资料是「Traditional Chinese(Taiwan)」。国籍语言资料的设定会影响 Java 编译器与JRE的判定。我之前就是因为国籍资料设定不正确,出了一堆 Java 和中文不兼容的怪事。

  2. 更新 Java 环境版本:改用最新版的 JDK,新版本的 JDK 说不定已经解决你原有的问题。请注重:某些 Java IDE 所用的编译器和 JRE 是不兼容于中文的(我遇过这样的情形),你最好能把 Java IDE 的 JDK 指到新版的 JDK。另外,假如数据库取回的资料是乱码,换别套或者更新 JDBC 驱动程序试试看。

  假如还是无法解决,请具体阅读下面各小节的内容,仔细推敲你的错误所在。

  Unicode、UTF-16、UTF-8

  Java 内部处理字符使用的字序方式是 Unicode,这是一种通行全球的编码方式。Unicode 因为必须将中、韩、日、英、法、阿拉伯……等许多国家所使用的文字都纳入,目前已经包含了六万多个字符,所以 Unicode 使用了 16 个位来为字符编码。因为 Unicode 使用了 16 位编码,所以每个字符都用 16 位来储存或传输是很自然的事,这种储存或传输的格式称为 UTF-16(是不是很像战斗机的名字)。假如你使用到的字符都是西方字符,那么你一定不会想用 UTF-16 的格式,因为体积比 8 位的 Latin-1(一种扩充 ASCII 的编码)多了一倍。所以 Unicode 另有一种储存或传输的格式,叫做 UTF-8。UTF-8 的格式在编码英文时,只需要 8 位,但是中文则是 24 位,所以中文字出现比例高的地方还是使用 UTF-16 比较节省空间。Java 的 Class File(也就是 bytecode)中有一字段叫做常数区(Constant Pool),一律使用 UTF-8 为字符编码。

  关于 Unicode 的编码,请查阅「The Unicode Standard, Version 3.0」一书(Addison-Wesley 出版);关于 UTF-8 编码,请查阅「Java I/O」一书的 399 页(O'Reilly 出版)。关于 Java Class File 的格式与 Constant Pool,请查阅「Java Virtual Machine」一书(O'Reilly出版)。

  Unicode 与繁体中文编码的互转

  虽然 Java 内部完整地使用 Unicode,但是你所使用的操作系统可不见得。以繁体中文版的 Windows 98 来说,预设的编码方式是 MS950,这是一种兼容于 Big 5的编码方式。字符串数据从 Windows 一送进 JRE,JRE 的转码系统马上先把字符串编码由 MS950 转成 Unicode,才能进行处理。字符串资料由 JRE 一送出给 Windows,JRE 的转码系统马上先将其由 Unicode 转成 MS950,操作系统才能处理。
  想知道你的 JDK 或 JRE 会用什么样的编码方式来和操作系统沟通,请执行下面的 Java 程序:

  public class ShowNativeEncoding {

  public static void main(String[] args) {

  String enc = System.getProperty("file.encoding");

  System.out.println(enc);

上一篇:JAVA开发精彩教程:JSF系列(一) 人气:796
下一篇:JAVA新手必备:Java基础之关键字 人气:604
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐