国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Hello Unicode —系統語言環境設置對JAVA應用的影響

2019-11-18 13:29:07
字體:
來源:轉載
供稿:網友

  要害詞:linux java mutlibyte encoding locale i18n i10n
  摘要:通過2個測試程序說明系統缺省編碼方式和應用的編碼策略對字符處理的影響,選擇合適的編碼處理策略,構建更符合國際化規范的通用應用?!?br />  測試程序-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.  
    //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
  相關連接請點 這里

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连南| 太湖县| 文山县| 朝阳县| 定陶县| 浏阳市| 徐州市| 衡阳县| 宜兰市| 九江县| 台北县| 右玉县| 临沧市| 科尔| 甘泉县| 五家渠市| 鄂尔多斯市| 泗阳县| 安远县| 长岭县| 岚皋县| 扶沟县| 宜兰县| 内丘县| 鱼台县| 神池县| 怀柔区| 丹凤县| 赫章县| 中江县| 根河市| 徐州市| 津南区| 喜德县| 栖霞市| 垣曲县| 浑源县| 甘孜| 土默特左旗| 普兰店市| 安陆市|