麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Hello Unicode —系統(tǒng)語(yǔ)言環(huán)境設(shè)置對(duì)JAVA應(yīng)用的影響

2019-11-18 13:29:07
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  要害詞:linux java mutlibyte encoding locale i18n i10n
  摘要:通過(guò)2個(gè)測(cè)試程序說(shuō)明系統(tǒng)缺省編碼方式和應(yīng)用的編碼策略對(duì)字符處理的影響,選擇合適的編碼處理策略,構(gòu)建更符合國(guó)際化規(guī)范的通用應(yīng)用。 
  測(cè)試程序-1
  為了了解JAVA應(yīng)用的編碼處理的機(jī)制,首先要了解操作系統(tǒng)對(duì)JVM缺省編碼方式的影響,因此我做了一個(gè)Env.java,用于打印顯示不同系統(tǒng)下JVM的屬性和系統(tǒng)支持的LOCALE。程序很簡(jiǎn)單:
  /*
   * Copyright (c) 2002 [email protected]
   * $Id: Env.java,v 1.1 2002/07/30 09:48:12 chedong EXP $
   */
  
  import java.util.*;
  import java.text.*;
  
  /**
   * 目的:
   * 顯示環(huán)境變量和JVM的缺省屬性
   * 輸入:無(wú)
   * 輸出:
   *   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屬性,這個(gè)屬性確定了JVM的缺省的編碼/解碼方式:從而影響應(yīng)用中所有字節(jié)流==>字符流的解碼方式 字符流==>字節(jié)流的編碼方式。
  LINUX下的LOCALE可以通過(guò) LANG=zh_CN; LC_ALL=zh_CN.GBK; export LANG LC_ALL 設(shè)置。locale 命令可以顯示系統(tǒng)當(dāng)前的環(huán)境設(shè)置
  Windows的LOCALE可以通過(guò)控制面板==>區(qū)域設(shè)置 設(shè)置實(shí)現(xiàn)
  列表1
  結(jié)論:
  JVM的缺省編碼方式由系統(tǒng)的LOCALE設(shè)置確定,所以當(dāng)設(shè)置成相同的LOCALE時(shí),Linux和Windows下的缺省編碼方式是沒(méi)有區(qū)別的(可以認(rèn)為cp1252=ISO-8859-1都是一樣的西文編碼方式,只包含255以下的拉丁字符),因此測(cè)試2我只列出了LINUX下LOCALE分別設(shè)置成zh_CN和en_US測(cè)試結(jié)果輸出和在WINDOWS下分別按照不同的區(qū)域設(shè)置試驗(yàn)的輸出結(jié)果是一樣的。
  測(cè)試程序-2
  通過(guò)一個(gè)HelloUnicode.java程序,演示說(shuō)明"Hello world 世界你好"這個(gè)字符串(16個(gè)字符)在不同缺省系統(tǒng)編碼方式下的處理效果。在編碼解碼的每個(gè)步驟之后,都打印出了相應(yīng)字符串每個(gè)字符(charactor)的byte值,short值和所在的UNICODE區(qū)間。
  列表2
  試驗(yàn)2的一些結(jié)論:
  所有的應(yīng)用都是按照字節(jié)流=>字符流=>字節(jié)流方式進(jìn)行的處理的:
  byte_stream ==(input decoding)==> char_stream ==output(encoding)==> byte_stream
  在JAVA字節(jié)流到字符流(或者反之)都是含有隱含的解碼處理的(缺省是按照系統(tǒng)缺省編碼方式);
  最早的字節(jié)流解碼過(guò)程從javac的代碼編譯就開(kāi)始了,
  JAVA中間的字符character存儲(chǔ)單位是雙字節(jié)的UNICODE,
  結(jié)論:
  從以上2個(gè)JAVA試驗(yàn)程序得出的一些結(jié)論:
  JAVA環(huán)境是基于操作系統(tǒng)上的一個(gè)虛擬機(jī)應(yīng)用,因此,假如操作系統(tǒng)遵循國(guó)際化規(guī)范:JVM的缺省編碼方式可以通過(guò)修改操作系統(tǒng)的LOCALE設(shè)置實(shí)現(xiàn)。對(duì)于一個(gè)JAVA應(yīng)用來(lái)說(shuō),只要將LINUX的缺省編碼方式設(shè)置成GBK,其文字編碼處理應(yīng)該和中文Windows平臺(tái)上的表現(xiàn)是一致的。
  redhat 6.X使用linux內(nèi)核的是基于glibc2.1.X,不支持中文LOCALE,因此無(wú)法通過(guò)改變LOCALE設(shè)置改變JVM的缺省編碼方式,linux內(nèi)核2.4開(kāi)始基于glibc.2.2.x,對(duì)中文LOCALE有了比較好的支持。
  不同的JVM對(duì)字符集的支持程度不同:比如:IBM的JVM1.3.0開(kāi)始支持GB18030,SUN的JVM從1.4開(kāi)始支持GB18030 正確的編碼方式不一定表示能正確的顯示,正確的顯示還要需要相應(yīng)的前端顯示系統(tǒng)(字庫(kù))的支持 對(duì)于Linux上的服務(wù)應(yīng)用來(lái)說(shuō),只要能確認(rèn)字符正確的按照指定的方式編碼就夠了.假如應(yīng)用的是基于UNICODE的編碼方式處理并使用UTF8字符集做集中存儲(chǔ),根據(jù)以上結(jié)論,設(shè)計(jì)一個(gè)適應(yīng)多語(yǔ)言環(huán)境的應(yīng)用,可以考慮一下處理模式:(客戶(hù)端應(yīng)用或本地化應(yīng)用)根據(jù)LOCALE,讓JAVA應(yīng)用按照系統(tǒng)LOCALE的缺省的字符集設(shè)置進(jìn)行處理
  Hello Unicode —系統(tǒng)語(yǔ)言環(huán)境設(shè)置對(duì)JAVA應(yīng)用的影響
  參考文檔:
  Java的國(guó)際化設(shè)計(jì)
  http://java.sun.com/docs/books/tutorial/i18n/index.Html
  
  Linux 國(guó)際化本地化和中文化
  http://www.linuxforum.net/doc/i18n-new.html
  
  Linux 程序員必讀:中文化與GB18030標(biāo)準(zhǔn)
  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 編程技術(shù)中漢字問(wèn)題的分析及解決
  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
  相關(guān)連接請(qǐng)點(diǎn) 這里

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美a级在线免费观看 | 91精品国产91热久久久做人人 | 91在线看黄 | 无码av女优 | 99ri在线 | 久久国产一级片 | 一级黄色影院 | 中国成人在线视频 | jizzjizz中国人少妇中文 | 九九热在线视频免费观看 | 92看片淫黄大片欧美看国产片 | 激情视频在线播放 | 蜜桃视频在线免费观看 | 国产毛片在线看 | 国产精品视频二区不卡 | 成品片a免费直接观看 | 巨根插入| 久草成人在线 | 久久久久久久久久性 | 国产精品久久久久久久久久久久久久久 | 特色一级黄色片 | 三人弄娇妻高潮3p视频 | 成人免费一区二区三区在线观看 | 国产日韩欧美一区 | 成人在线免费观看小视频 | 久久精品亚洲一区 | 黄色欧美精品 | 亚洲天堂午夜 | 在线97视频 | 国产精品自拍啪啪 | 青青操精品| av在线免费看片 | 成av在线| 免费看欧美一级特黄a毛片 九色com | 伊人999| 国产91亚洲精品一区二区三区 | 日韩在线毛片 | 国产三级在线观看a | 日本人乱人乱亲乱色视频观看 | 黄色成人av在线 | 国产午夜免费不卡精品理论片 |