动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
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教程 ]的信息

本月文章推荐
.迁移到 Eclipse: Eclipse 对 JBu.
.J2SE(TM) 5.0 语言特性.
.经典Java开发工具介绍(5):Web.
.JAVA哲学 -- 前言.
.学会Tiles在JSF框架中的应用指南.
.Java学习之道.
.java小游戏-贪吃蛇.
.Java语言基础 对于JAVA基础知识精.
.Java入门(2) 面向对象的程序设计.
.Java模式学习一、简单工厂.
.MVC 设计模式:将 Web 应用分三层.
.技术前沿:网格帮助SOA扩大规模.
.JAVA-字符串处理中的重点.
.J2SE综合:对java.util的总结 六.
.Visual C++打造Windows信使服务程.
.用JavaBean数据组件集成JSF应用程.
.JavaServer Pages常见问题.
.在UML中表示Java继承和接口.
.Java理论和实践:用软引用阻止内存.
.使用Properties从配置文件中读取.

Hello Unicode —系统语言环境设置对JAVA应用的影响

发表日期:2008-1-5 |



  要害词:Linux Java mutlibyte encoding locale i18n i10n
  摘要:通过2个测试程序说明系统缺省编码方式和应用的编码策略对字符处理的影响,选择合适的编码处理策略,构建更符合国际化规范的通用应用。 
  测试程序-1
  为了了解JAVA应用的编码处理的机制,首先要了解操作系统对JVM缺省编码方式的影响,因此我做了一个Env.java,用于打印显示不同系统下JVM的属性和系统支持的LOCALE。程序很简单:
  /*
   * Copyright (c) 2002 chedong@bigfoot.com
   * $Id: Env.java,v 1.1 2002/07/30 09:48:12 chedong EXP $
   */
  
  import java.util.*;
  import java.text.*;
  
  /**
   * 目的:
   * 显示环境变量和JVM的缺省属性
   * 输入:无
   * 输出:
   *   1 支持的LOCALE
   *   2 JVM的缺省属性
   */
  
  public class Env {
  /**
   * main entrance
   */
  public static void main(String[] args) {
  
    System.out.println("Hello, it's: " + new Date());
  
    //print available locales
    Locale list[] = DateFormat.getAvailableLocales();
    System.out.println("======System available locales:======== ");
    for (int i = 0; i < list.length; i++) {
      System.out.println(list[i].toString() + "\t" + list[i].getDisplayName());
    }
  
    //print JVM default properties
    System.out.println("======System property======== ");
    System.getProperties().list(System.out);
  }
  }
  最需要注重的是JVM的file.encoding属性,这个属性确定了JVM的缺省的编码/解码方式:从而影响应用中所有字节流==>字符流的解码方式 字符流==>字节流的编码方式。
  LINUX下的LOCALE可以通过 LANG=zh_CN; LC_ALL=zh_CN.GBK; export LANG LC_ALL 设置。locale 命令可以显示系统当前的环境设置
  Windows的LOCALE可以通过控制面板==>区域设置 设置实现
  列表1
  结论:
  JVM的缺省编码方式由系统的LOCALE设置确定,所以当设置成相同的LOCALE时,Linux和Windows下的缺省编码方式是没有区别的(可以认为cp1252=ISO-8859-1都是一样的西文编码方式,只包含255以下的拉丁字符),因此测试2我只列出了LINUX下LOCALE分别设置成zh_CN和en_US测试结果输出和在WINDOWS下分别按照不同的区域设置试验的输出结果是一样的。
  测试程序-2
  通过一个HelloUnicode.java程序,演示说明"Hello world 世界你好"这个字符串(16个字符)在不同缺省系统编码方式下的处理效果。在编码解码的每个步骤之后,都打印出了相应字符串每个字符(charactor)的byte值,short值和所在的UNICODE区间。
  列表2
  试验2的一些结论:
  所有的应用都是按照字节流=>字符流=>字节流方式进行的处理的:
  byte_stream ==(input decoding)==> char_stream ==output(encoding)==> byte_stream
  在JAVA字节流到字符流(或者反之)都是含有隐含的解码处理的(缺省是按照系统缺省编码方式);
  最早的字节流解码过程从javac的代码编译就开始了,
  JAVA中间的字符character存储单位是双字节的UNICODE,
  结论:
  从以上2个JAVA试验程序得出的一些结论:
  JAVA环境是基于操作系统上的一个虚拟机应用,因此,假如操作系统遵循国际化规范:JVM的缺省编码方式可以通过修改操作系统的LOCALE设置实现。对于一个JAVA应用来说,只要将LINUX的缺省编码方式设置成GBK,其文字编码处理应该和中文Windows平台上的表现是一致的。
  redhat 6.X使用linux内核的是基于glibc2.1.X,不支持中文LOCALE,因此无法通过改变LOCALE设置改变JVM的缺省编码方式,linux内核2.4开始基于glibc.2.2.x,对中文LOCALE有了比较好的支持。
  不同的JVM对字符集的支持程度不同:比如:IBM的JVM1.3.0开始支持GB18030,SUN的JVM从1.4开始支持GB18030 正确的编码方式不一定表示能正确的显示,正确的显示还要需要相应的前端显示系统(字库)的支持 对于Linux上的服务应用来说,只要能确认字符正确的按照指定的方式编码就够了.假如应用的是基于UNICODE的编码方式处理并使用UTF8字符集做集中存储,根据以上结论,设计一个适应多语言环境的应用,可以考虑一下处理模式:(客户端应用或本地化应用)根据LOCALE,让JAVA应用按照系统LOCALE的缺省的字符集设置进行处理
  Hello Unicode —系统语言环境设置对JAVA应用的影响
  参考文档:
  Java的国际化设计
  http://java.sun.com/docs/books/tutorial/i18n/index.Html
  
  Linux 国际化本地化和中文化
  http://www.linuxforum.net/doc/i18n-new.html
  
  Linux 程序员必读:中文化与GB18030标准
  http://www.ccidnet.com/tech/os/2001/07/31/58_2811.html
  
  Unicode FAQ
  http://www.cl.cam.ac.uk/~mgk25/unicode.html
  http://www.linuxforum.net/books/UTF-8-Unicode.html (中文版)
  
  Java 编程技术中汉字问题的分析及解决
  http://www-900.ibm.com/developerWorks/java/java_chinese/index.shtml
  
  汉字的编码方式:
  http://www.unihan.com.cn/cjk/ana17.htm
  
  不同版本的JVM支持的编码方式
  http://java.sun.com/j2se/1.3/docs/guide/intl/encoding.doc.html
  http://java.sun.com/j2se/1.4/docs/guide/intl/encoding.doc.html
  相关连接请点 这里
上一篇:2种Unix系统克隆方法 人气:514
下一篇:Java 国际化和本地化 Toolkit 2.0(下) 人气:482
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-4 LPLY CMS 网站管理系统 v5.0
2008-9-4 缤纷互动视频交友 v3.01.902
2008-9-4 ADN视频收藏专家 v3.0 bulid 080
2008-9-4 天空网络电影系统SKYUC v2.5.6 简
2008-9-4 Web Wiz Rich Text Editor(文本编
2008-9-4 幻影动漫网视频系统(Ppdong) v1.
2008-9-4 乐维电脑在线DIY配置系统
2008-9-4 老樊文章管理系统SQL版
2008-9-4 ASP.NET 2.53 缩略图水印组件源码
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵