读书人

java的编码有关问题unicode,utf-8

发布时间: 2012-10-10 13:58:11 作者: rapoo

java的编码问题unicode,utf-8

英文其他西欧字符 ōē
英文希腊字符
 μγ 英文其他单字节 字符集

?

GB2312 BIG5 SJIS等多字节字符集(MultiByte Charsets):

对于亚洲语言来说:汉字这么多,用这么一个256格的小棋盘肯定放不下,所以要区别成千上万的汉字
解决办法就是用2个字节(坐标)来定位一个“字”在棋盘上的位置,将以上规则做一个扩展:

如果第1个字符是小于128(\x80)的仍和英文字符集编码方式保持兼容; 如果第1个字符是大于128(\x80)的,就当成是汉字的第1个字节,这个自己和后面紧跟的1个字节组成一个汉字;

其结果相当于在位于128以上的小棋格里每个小棋格又划分出了一个16×16的小棋盘。这样一个棋盘中的格
子数(可能容纳的字符数)就变成了128 + 128 * 256。按照类似的方式有了简体中文的GB2312标准,
繁体中文的BIG5字符集和日文的SJIS字符集等,GB2312字符集包含大约有六仟多个常用简体汉字。

简体中文
日文SJIS
繁体中文
英文简
体  中
  文 英文日
 文      英文

 繁  体
中文

由此可以看出,所有这些从ASCII扩展式的编码方式中:英文部分都是兼容的,但扩展部分的编码方式是不兼容的
,虽然很多字在3种体系中写法一致(比如“中文”这2个字)但在相应字符集中的坐标不一致,所以GB2312编写
的页面用BIG5看就变得面目全非了。而且有时候经常在浏览其他非英语国家的页面时(比如包含有德语的人名时)
经常出现奇怪的汉字,其实就是扩展位的编码冲突造成的。

我把GBK和GB18030理解成一个小UNICODE:GBK字符集是GB2312的扩展(K),GBK里大约有贰万玖仟多个字符,除了保持和GB2312兼容外,繁体中文字,甚至连日文的假名字符也能显示。而GB18030-2000则是一个更复杂的字符
集,采用变长字节的编码方式,能够支持更多的字符。关于汉字的编码方式比较详细的定义规范可以参考:
http://www.unihan.com.cn/cjk/ana17.htm

ASCII(英文) ==> 西欧文字 ==> 东欧字符集(俄文,希腊语等) ==> 东亚字符集(GB2312 BIG5 SJIS等
)==> 扩展字符集GBK GB18030这个发展过程基本上也反映了字符集标准的发展过程,但这么随着时间的推移,
尤其是互联网让跨语言的信息的交互变得越来越多的时候,太多多针对本地语言的编码标准的出现导致一个应用程
序的国际化变得成本非常高。尤其是你要编写一个同时包含法文和简体中文的文档,这时候一般都会想到要是用
一个通用的字符集能够显示所有语言的所有文字就好了,而且这样做应用也能够比较方便的国际化,为了达到这
个目标,即使应用牺牲一些空间和程序效率也是非常值得的。UNICODE就是这样一个通用的解决方案。

UNICODE双字节字符集
所以你可以把UNICODE想象成这样:让所有的字符(包括英文)都用2个字节(2个8位)表示,这样就有了一个2^(8*2) = 256 * 256 = 65536个格子的大棋盘。在这个棋盘中,这样中(简繁)日韩(还包括越南)文字作为CJK字符集都放在一定的区位内,为了减少重复,各种语言中写法一样的字共享一个“棋格”。详细的区位见附录A

Unicode:(DoubleByte Charsets)

西C中 其欧J日 它英K韩 语文  言

?

什么还要有UTF-8?毕竟互联网70%以上的信息仍然是英文。如果连英文都用2个字节存取(UCS-2),空间浪费不就太多了?所谓UTF-8就是这样一个为了提高英文存取效率的字符集转换格式:Unicode Transformation Form 8-bit form。用UTF-8,UNICODE的2字节字符用变长个(1-3个字节)表示:

    对英文,仍然和ASCII一样用1个字节表示,这个字节的值小于128(\x80); 对其他语言的用一个值位于128-256之间的字节开始,再加后面紧跟的2个字节表示,一个字符一共是3个字节;

因此,在应用中程序处理过程中所有字符都是16位(双字节),但在存取转换成字节流时使用UTF-8格式转换,对于英文字符来说和原来用ASCII方式存取时相比大小仍然是一样的,而对中文来说和原来的GB2312编码方式相比,大小为:(3字节/2字节)=1.5倍

小节:

假设英文字符集是一个16×16的棋盘,么其他语言的字符集就是把高位区重新分割的(> 128)的中等棋盘,多种字符集之间互不兼容而UNICODE本身就相当于一个256×256的大棋盘,通过一定规则将英文和其他所有语言的字符都包含在内。

试验1:操作系统语言环境设置对Java应用缺省编码方式的影响

为了了解Java应用的编码处理的机制,首先要了解操作系统对JVM缺省编码方式的影响,因此我做了一个Env.java,用于打印显示不同系统下JVM的属性和系统支持的LOCALE。程序很简单:

/** Copyright (c) 2002 Email: chedongATbigfoot.com/chedongATchedong.com* $Id: hello_unicode.html,v 1.6 2003/11/09 07:57:11 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 localesLocale 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 propertiesSystem.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可以通过 控制面板==>区域设置 设置实现

GNU/Linux 2.4.x (J2SE1.3.1)
LANG=en_US LC_ALL=en_US
GNU/Linux 2.4.x (J2SE1.3.1)
LANG=zh_CN LC_ALL=zh_CN.GBK
Windows 2000(J2SE1.3.0)?
区域设置:中国? 中文
Windows 2000(J2SE1.3.0)?
区域设置:英国 英文
Hello, it's: Tue Jul 30 11:05:44 CST 2002            ======System available locales:========             en English            en_US English (United States)            ar Arabic            ar_AE Arabic (United Arab Emirates)            ar_BH Arabic (Bahrain)            ar_DZ Arabic (Algeria)            ar_EG Arabic (Egypt)            ar_IQ Arabic (Iraq)            ar_JO Arabic (Jordan)            ar_KW Arabic (Kuwait)            ar_LB Arabic (Lebanon)            ar_LY Arabic (Libya)            ar_MA Arabic (Morocco)            ar_OM Arabic (Oman)            ar_QA Arabic (Qatar)            ar_SA Arabic (Saudi Arabia)            ar_SD Arabic (Sudan)            ar_SY Arabic (Syria)            ar_TN Arabic (Tunisia)            ar_YE Arabic (Yemen)            be Byelorussian            be_BY Byelorussian (Belarus)            bg Bulgarian            bg_BG Bulgarian (Bulgaria)            ca Catalan            ca_ES Catalan (Spain)            ca_ES_EURO Catalan (Spain,Euro)            cs Czech            cs_CZ Czech (Czech Republic)            da Danish            da_DK Danish (Denmark)            de German            de_AT German (Austria)            de_AT_EURO German (Austria,Euro)            de_CH German (Switzerland)            de_DE German (Germany)            de_DE_EURO German (Germany,Euro)            de_LU German (Luxembourg)            de_LU_EURO German (Luxembourg,Euro)            el Greek            el_GR Greek (Greece)            en_AU English (Australia)            en_CA English (Canada)            en_GB English (United Kingdom)            en_IE English (Ireland)            en_IE_EURO English (Ireland,Euro)            en_NZ English (New Zealand)            en_ZA English (South Africa)            es Spanish            es_BO Spanish (Bolivia)            es_AR Spanish (Argentina)            es_CL Spanish (Chile)            es_CO Spanish (Colombia)            es_CR Spanish (Costa Rica)            es_DO Spanish (Dominican Republic)            es_EC Spanish (Ecuador)            es_ES Spanish (Spain)            es_ES_EURO Spanish (Spain,Euro)            es_GT Spanish (Guatemala)            es_HN Spanish (Honduras)            es_MX Spanish (Mexico)            es_NI Spanish (Nicaragua)            et Estonian            es_PA Spanish (Panama)            es_PE Spanish (Peru)            es_PR Spanish (Puerto Rico)            es_PY Spanish (Paraguay)            es_SV Spanish (El Salvador)            es_UY Spanish (Uruguay)            es_VE Spanish (Venezuela)            et_EE Estonian (Estonia)            fi Finnish            fi_FI Finnish (Finland)            fi_FI_EURO Finnish (Finland,Euro)            fr French            fr_BE French (Belgium)            fr_BE_EURO French (Belgium,Euro)            fr_CA French (Canada)            fr_CH French (Switzerland)            fr_FR French (France)            fr_FR_EURO French (France,Euro)            fr_LU French (Luxembourg)            fr_LU_EURO French (Luxembourg,Euro)            hr Croatian            hr_HR Croatian (Croatia)            hu Hungarian            hu_HU Hungarian (Hungary)            is Icelandic            is_IS Icelandic (Iceland)            it Italian            it_CH Italian (Switzerland)            it_IT Italian (Italy)            it_IT_EURO Italian (Italy,Euro)            iw Hebrew            iw_IL Hebrew (Israel)            ja Japanese            ja_JP Japanese (Japan)            ko Korean            ko_KR Korean (South Korea)            lt Lithuanian            lt_LT Lithuanian (Lithuania)            lv Latvian (Lettish)            lv_LV Latvian (Lettish) (Latvia)            mk Macedonian            mk_MK Macedonian (Macedonia)            nl Dutch            nl_BE Dutch (Belgium)            nl_BE_EURO Dutch (Belgium,Euro)            nl_NL Dutch (Netherlands)            nl_NL_EURO Dutch (Netherlands,Euro)            no Norwegian            no_NO Norwegian (Norway)            no_NO_NY Norwegian (Norway,Nynorsk)            pl Polish            pl_PL Polish (Poland)            pt Portuguese            pt_BR Portuguese (Brazil)            pt_PT Portuguese (Portugal)            pt_PT_EURO Portuguese (Portugal,Euro)            ro Romanian            ro_RO Romanian (Romania)            ru Russian            ru_RU Russian (Russia)            sh Serbo-Croatian            sh_YU Serbo-Croatian (Yugoslavia)            sk Slovak            sk_SK Slovak (Slovakia)            sl Slovenian            sl_SI Slovenian (Slovenia)            sq Albanian            sq_AL Albanian (Albania)            sr Serbian            sr_YU Serbian (Yugoslavia)            sv Swedish            sv_SE Swedish (Sweden)            th Thai            th_TH Thai (Thailand)            tr Turkish            tr_TR Turkish (Turkey)            uk Ukrainian            uk_UA Ukrainian (Ukraine)            zh Chinese            zh_CN Chinese (China)            zh_HK Chinese (Hong Kong)            zh_TW Chinese (Taiwan)            ======System property========             -- listing properties --            java.runtime.name=Java(TM) 2 Runtime Environment, Stand...            sun.boot.library.path=/usr/java/jdk1.3.1_04/jre/lib/i386            java.vm.version=1.3.1_04-b02            java.vm.vendor=Sun Microsystems Inc.            java.vendor.url=http://java.sun.com/            path.separator=:            java.vm.name=Java HotSpot(TM) Client VM            file.encoding.pkg=sun.io            java.vm.specification.name=Java Virtual Machine Specification            user.dir=/home/chedong/src/char_test            java.runtime.version=1.3.1_04-b02            java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment            os.arch=i386            java.io.tmpdir=/tmp            line.separator=                        java.vm.specification.vendor=Sun Microsystems Inc.            java.awt.fonts=            os.name=Linux            java.library.path=/usr/java/jdk1.3.1_04/jre/lib/i386:/u...            java.specification.name=Java Platform API Specification            java.class.version=47.0            os.version=2.4.7-10            user.home=/home/chedong            user.timezone=Asia/Shanghai            java.awt.printerjob=sun.awt.motif.PSPrinterJob            file.encoding=ISO-8859-1            java.specification.version=1.3            user.name=chedong            java.class.path=/home/chedong/classes            java.vm.specification.version=1.0            java.home=/usr/java/jdk1.3.1_04/jre            user.language=en            java.specification.vendor=Sun Microsystems Inc.            java.vm.info=mixed mode            java.version=1.3.1_04            java.ext.dirs=/usr/java/jdk1.3.1_04/jre/lib/ext            sun.boot.class.path=/usr/java/jdk1.3.1_04/jre/lib/rt.jar:...            java.vendor=Sun Microsystems Inc.            file.separator=/            java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...            sun.cpu.endian=little            sun.io.unicode.encoding=UnicodeLittle            user.region=US            sun.cpu.isalist=            
Hello, it's: Tue Jul 30 11:07:34 CST 2002            ======System available locales:========            en 英文            en_US 英文 (美国)            ar 阿拉伯文            ar_AE 阿拉伯文 (阿拉伯联合酋长国)            ar_BH 阿拉伯文 (巴林)            ar_DZ 阿拉伯文 (阿尔及利亚)            ar_EG 阿拉伯文 (埃及)            ar_IQ 阿拉伯文 (伊拉克)            ar_JO 阿拉伯文 (约旦)            ar_KW 阿拉伯文 (科威特)            ar_LB 阿拉伯文 (黎巴嫩)            ar_LY 阿拉伯文 (利比亚)            ar_MA 阿拉伯文 (摩洛哥)            ar_OM 阿拉伯文 (阿曼)            ar_QA 阿拉伯文 (卡塔尔)            ar_SA 阿拉伯文 (沙特阿拉伯)            ar_SD 阿拉伯文 (苏丹)            ar_SY 阿拉伯文 (叙利亚)            ar_TN 阿拉伯文 (突尼斯)            ar_YE 阿拉伯文 (也门)            be 白俄罗斯文            be_BY 白俄罗斯文 (白俄罗斯)            bg 保加利亚文            bg_BG 保加利亚文 (保加利亚)            ca 加泰罗尼亚文            ca_ES 加泰罗尼亚文 (西班牙)            ca_ES_EURO 加泰罗尼亚文 (西班牙,Euro)            cs 捷克文            cs_CZ 捷克文 (捷克共和国)            da 丹麦文            da_DK 丹麦文 (丹麦)            de 德文            de_AT 德文 (奥地利)            de_AT_EURO 德文 (奥地利,Euro)            de_CH 德文 (瑞士)            de_DE 德文 (德国)            de_DE_EURO 德文 (德国,Euro)            de_LU 德文 (卢森堡)            de_LU_EURO 德文 (卢森堡,Euro)            el 希腊文            el_GR 希腊文 (希腊)            en_AU 英文 (澳大利亚)            en_CA 英文 (加拿大)            en_GB 英文 (英国)            en_IE 英文 (爱尔兰)            en_IE_EURO 英文 (爱尔兰,Euro)            en_NZ 英文 (新西兰)            en_ZA 英文 (南非)            es 西班牙文            es_BO 西班牙文 (玻利维亚)            es_AR 西班牙文 (阿根廷)            es_CL 西班牙文 (智利)            es_CO 西班牙文 (哥伦比亚)            es_CR 西班牙文 (哥斯达黎加)            es_DO 西班牙文 (多米尼加共和国)            es_EC 西班牙文 (厄瓜多尔)            es_ES 西班牙文 (西班牙)            es_ES_EURO 西班牙文 (西班牙,Euro)            es_GT 西班牙文 (危地马拉)            es_HN 西班牙文 (洪都拉斯)            es_MX 西班牙文 (墨西哥)            es_NI 西班牙文 (尼加拉瓜)            et 爱沙尼亚文            es_PA 西班牙文 (巴拿马)            es_PE 西班牙文 (秘鲁)            es_PR 西班牙文 (波多黎哥)            es_PY 西班牙文 (巴拉圭)            es_SV 西班牙文 (萨尔瓦多)            es_UY 西班牙文 (乌拉圭)            es_VE 西班牙文 (委内瑞拉)            et_EE 爱沙尼亚文 (爱沙尼亚)            fi 芬兰文            fi_FI 芬兰文 (芬兰)            fi_FI_EURO 芬兰文 (芬兰,Euro)            fr 法文            fr_BE 法文 (比利时)            fr_BE_EURO 法文 (比利时,Euro)            fr_CA 法文 (加拿大)            fr_CH 法文 (瑞士)            fr_FR 法文 (法国)            fr_FR_EURO 法文 (法国,Euro)            fr_LU 法文 (卢森堡)            fr_LU_EURO 法文 (卢森堡,Euro)            hr 克罗地亚文            hr_HR 克罗地亚文 (克罗地亚)            hu 匈牙利文            hu_HU 匈牙利文 (匈牙利)            is 冰岛文            is_IS 冰岛文 (冰岛)            it 意大利文            it_CH 意大利文 (瑞士)            it_IT 意大利文 (意大利)            it_IT_EURO 意大利文 (意大利,Euro)            iw 希伯来文            iw_IL 希伯来文 (以色列)            ja 日文            ja_JP 日文 (日本)            ko 朝鲜文            ko_KR 朝鲜文 (南朝鲜)            lt 立陶宛文            lt_LT 立陶宛文 (立陶宛)            lv 拉托维亚文(列托)            lv_LV 拉托维亚文(列托) (拉脱维亚)            mk 马其顿文            mk_MK 马其顿文 (马其顿王国)            nl 荷兰文            nl_BE 荷兰文 (比利时)            nl_BE_EURO 荷兰文 (比利时,Euro)            nl_NL 荷兰文 (荷兰)            nl_NL_EURO 荷兰文 (荷兰,Euro)            no 挪威文            no_NO 挪威文 (挪威)            no_NO_NY 挪威文 (挪威,Nynorsk)            pl 波兰文            pl_PL 波兰文 (波兰)            pt 葡萄牙文            pt_BR 葡萄牙文 (巴西)            pt_PT 葡萄牙文 (葡萄牙)            pt_PT_EURO 葡萄牙文 (葡萄牙,Euro)            ro 罗马尼亚文            ro_RO 罗马尼亚文 (罗马尼亚)            ru 俄文            ru_RU 俄文 (俄罗斯)            sh 塞波尼斯-克罗地亚文            sh_YU 塞波尼斯-克罗地亚文 (南斯拉夫)            sk 斯洛伐克文            sk_SK 斯洛伐克文 (斯洛伐克)            sl 斯洛文尼亚文            sl_SI 斯洛文尼亚文 (斯洛文尼亚)            sq 阿尔巴尼亚文            sq_AL 阿尔巴尼亚文 (阿尔巴尼亚)            sr 塞尔维亚文            sr_YU 塞尔维亚文 (南斯拉夫)            sv 瑞典文            sv_SE 瑞典文 (瑞典)            th 泰文            th_TH 泰文 (泰国)            tr 土耳其文            tr_TR 土耳其文 (土耳其)            uk 乌克兰文            uk_UA 乌克兰文 (乌克兰)            zh 中文            zh_CN 中文 (中国)            zh_HK 中文 (香港)            zh_TW 中文 (台湾)            ======System property========            -- listing properties --            java.runtime.name=Java(TM) 2 Runtime Environment, Stand...            sun.boot.library.path=/usr/java/jdk1.3.1_04/jre/lib/i386            java.vm.version=1.3.1_04-b02            java.vm.vendor=Sun Microsystems Inc.            java.vendor.url=http://java.sun.com/            path.separator=:            java.vm.name=Java HotSpot(TM) Client VM            file.encoding.pkg=sun.io            java.vm.specification.name=Java Virtual Machine Specification            user.dir=/home/chedong/src/char_test            java.runtime.version=1.3.1_04-b02            java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment            os.arch=i386            java.io.tmpdir=/tmp            line.separator=                        java.vm.specification.vendor=Sun Microsystems Inc.            java.awt.fonts=            os.name=Linux            java.library.path=/usr/java/jdk1.3.1_04/jre/lib/i386:/u...            java.specification.name=Java Platform API Specification            java.class.version=47.0            os.version=2.4.7-10            user.home=/home/chedong            user.timezone=Asia/Shanghai            java.awt.printerjob=sun.awt.motif.PSPrinterJob            file.encoding=GBK            java.specification.version=1.3            user.name=chedong            java.class.path=/home/chedong/classes            java.vm.specification.version=1.0            java.home=/usr/java/jdk1.3.1_04/jre            user.language=zh            java.specification.vendor=Sun Microsystems Inc.            java.vm.info=mixed mode            java.version=1.3.1_04            java.ext.dirs=/usr/java/jdk1.3.1_04/jre/lib/ext            sun.boot.class.path=/usr/java/jdk1.3.1_04/jre/lib/rt.jar:...            java.vendor=Sun Microsystems Inc.            file.separator=/            java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...            sun.cpu.endian=little            sun.io.unicode.encoding=UnicodeLittle            user.region=CN            sun.cpu.isalist=            
Hello, it's: Tue Jul 30 11:49:36 CST 2002            ======System available locales:========            en English            en_US English (United States)            ar Arabic            ar_AE Arabic (United Arab Emirates)            ar_BH Arabic (Bahrain)            ar_DZ Arabic (Algeria)            ar_EG Arabic (Egypt)            ar_IQ Arabic (Iraq)            ar_JO Arabic (Jordan)            ar_KW Arabic (Kuwait)            ar_LB Arabic (Lebanon)            ar_LY Arabic (Libya)            ar_MA Arabic (Morocco)            ar_OM Arabic (Oman)            ar_QA Arabic (Qatar)            ar_SA Arabic (Saudi Arabia)            ar_SD Arabic (Sudan)            ar_SY Arabic (Syria)            ar_TN Arabic (Tunisia)            ar_YE Arabic (Yemen)            be Byelorussian            be_BY Byelorussian (Belarus)            bg Bulgarian            bg_BG Bulgarian (Bulgaria)            ca Catalan            ca_ES Catalan (Spain)            ca_ES_EURO Catalan (Spain,Euro)            cs Czech            cs_CZ Czech (Czech Republic)            da Danish            da_DK Danish (Denmark)            de German            de_AT German (Austria)            de_AT_EURO German (Austria,Euro)            de_CH German (Switzerland)            de_DE German (Germany)            de_DE_EURO German (Germany,Euro)            de_LU German (Luxembourg)            de_LU_EURO German (Luxembourg,Euro)            el Greek            el_GR Greek (Greece)            en_AU English (Australia)            en_CA English (Canada)            en_GB English (United Kingdom)            en_IE English (Ireland)            en_IE_EURO English (Ireland,Euro)            en_NZ English (New Zealand)            en_ZA English (South Africa)            es Spanish            es_AR Spanish (Argentina)            es_BO Spanish (Bolivia)            es_CL Spanish (Chile)            es_CO Spanish (Colombia)            es_CR Spanish (Costa Rica)            es_DO Spanish (Dominican Republic)            es_EC Spanish (Ecuador)            es_ES Spanish (Spain)            es_ES_EURO Spanish (Spain,Euro)            es_GT Spanish (Guatemala)            es_HN Spanish (Honduras)            es_MX Spanish (Mexico)            es_NI Spanish (Nicaragua)            es_PA Spanish (Panama)            es_PE Spanish (Peru)            es_PR Spanish (Puerto Rico)            es_PY Spanish (Paraguay)            es_SV Spanish (El Salvador)            es_UY Spanish (Uruguay)            es_VE Spanish (Venezuela)            et Estonian            et_EE Estonian (Estonia)            fi Finnish            fi_FI Finnish (Finland)            fi_FI_EURO Finnish (Finland,Euro)            fr French            fr_BE French (Belgium)            fr_BE_EURO French (Belgium,Euro)            fr_CA French (Canada)            fr_CH French (Switzerland)            fr_FR French (France)            fr_FR_EURO French (France,Euro)            fr_LU French (Luxembourg)            fr_LU_EURO French (Luxembourg,Euro)            hr Croatian            hr_HR Croatian (Croatia)            hu Hungarian            hu_HU Hungarian (Hungary)            is Icelandic            is_IS Icelandic (Iceland)            it Italian            it_CH Italian (Switzerland)            it_IT Italian (Italy)            it_IT_EURO Italian (Italy,Euro)            iw Hebrew            iw_IL Hebrew (Israel)            ja Japanese            ja_JP Japanese (Japan)            ko 韩文            ko_KR 韩文 (大韩民国)            lt Lithuanian            lt_LT Lithuanian (Lithuania)            lv Latvian (Lettish)            lv_LV Latvian (Lettish) (Latvia)            mk Macedonian            mk_MK Macedonian (Macedonia)            nl Dutch            nl_BE Dutch (Belgium)            nl_BE_EURO Dutch (Belgium,Euro)            nl_NL Dutch (Netherlands)            nl_NL_EURO Dutch (Netherlands,Euro)            no Norwegian            no_NO Norwegian (Norway)            no_NO_NY Norwegian (Norway,Nynorsk)            pl Polish            pl_PL Polish (Poland)            pt Portuguese            pt_BR Portuguese (Brazil)            pt_PT Portuguese (Portugal)            pt_PT_EURO Portuguese (Portugal,Euro)            ro Romanian            ro_RO Romanian (Romania)            ru Russian            ru_RU Russian (Russia)            sh Serbo-Croatian            sh_YU Serbo-Croatian (Yugoslavia)            sk Slovak            sk_SK Slovak (Slovakia)            sl Slovenian            sl_SI Slovenian (Slovenia)            sq Albanian            sq_AL Albanian (Albania)            sr Serbian            sr_YU Serbian (Yugoslavia)            sv Swedish            sv_SE Swedish (Sweden)            th Thai            th_TH Thai (Thailand)            tr Turkish            tr_TR Turkish (Turkey)            uk Ukrainian            uk_UA Ukrainian (Ukraine)            zh 中文            zh_CN 中文 (中华人民共和国)            zh_HK 中文 (香港)            zh_TW 中文 (台湾)            ======System property========            -- listing properties --            java.runtime.name=Java(TM) 2 Runtime Environment, Stand...            sun.boot.library.path=C:\PROGRAM FILES\JavaSOFT\JRE\1.3.0_0...            java.vm.version=1.3.0_02            java.vm.vendor=Sun Microsystems Inc.            java.vendor.url=http://java.sun.com/            path.separator=;            java.vm.name=Java HotSpot(TM) Client VM            file.encoding.pkg=sun.io            java.vm.specification.name=Java Virtual Machine Specification            user.dir=D:\java\src\char_test            java.runtime.version=1.3.0_02            java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment            os.arch=x86            java.io.tmpdir=D:\TEMP\            line.separator=                        java.vm.specification.vendor=Sun Microsystems Inc.            java.awt.fonts=            os.name=Windows 98            java.library.path=C:\WINDOWS;.;C:\WINDOWS\SYSTEM;C:\WIN...            java.specification.name=Java Platform API Specification            java.class.version=47.0            os.version=4.90            user.home=C:\WINDOWS            user.timezone=Asia/Shanghai            java.awt.printerjob=sun.awt.windows.WPrinterJob            file.encoding=GBK            java.specification.version=1.3            user.name=Sicci            java.class.path=d:\java\classes            java.vm.specification.version=1.0            java.home=C:\PROGRAM FILES\JavaSOFT\JRE\1.3.0_02            user.language=zh            java.specification.vendor=Sun Microsystems Inc.            awt.toolkit=sun.awt.windows.WToolkit            java.vm.info=mixed mode            java.version=1.3.0_02            java.ext.dirs=C:\PROGRAM FILES\JavaSOFT\JRE\1.3.0_0...            sun.boot.class.path=C:\PROGRAM FILES\JavaSOFT\JRE\1.3.0_0...            java.vendor=Sun Microsystems Inc.            file.separator=\            java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...            sun.cpu.endian=little            sun.io.unicode.encoding=UnicodeLittle            user.region=CN            sun.cpu.isalist=pentium i486 i386
Hello, it's: Tue Jul 30 11:53:27 CST 2002            ======System available locales:========            en English            en_US English (United States)            ar Arabic            ar_AE Arabic (United Arab Emirates)            ar_BH Arabic (Bahrain)            ar_DZ Arabic (Algeria)            ar_EG Arabic (Egypt)            ar_IQ Arabic (Iraq)            ar_JO Arabic (Jordan)            ar_KW Arabic (Kuwait)            ar_LB Arabic (Lebanon)            ar_LY Arabic (Libya)            ar_MA Arabic (Morocco)            ar_OM Arabic (Oman)            ar_QA Arabic (Qatar)            ar_SA Arabic (Saudi Arabia)            ar_SD Arabic (Sudan)            ar_SY Arabic (Syria)            ar_TN Arabic (Tunisia)            ar_YE Arabic (Yemen)            be Byelorussian            be_BY Byelorussian (Belarus)            bg Bulgarian            bg_BG Bulgarian (Bulgaria)            ca Catalan            ca_ES Catalan (Spain)            ca_ES_EURO Catalan (Spain,Euro)            cs Czech            cs_CZ Czech (Czech Republic)            da Danish            da_DK Danish (Denmark)            de German            de_AT German (Austria)            de_AT_EURO German (Austria,Euro)            de_CH German (Switzerland)            de_DE German (Germany)            de_DE_EURO German (Germany,Euro)            de_LU German (Luxembourg)            de_LU_EURO German (Luxembourg,Euro)            el Greek            el_GR Greek (Greece)            en_AU English (Australia)            en_CA English (Canada)            en_GB English (United Kingdom)            en_IE English (Ireland)            en_IE_EURO English (Ireland,Euro)            en_NZ English (New Zealand)            en_ZA English (South Africa)            es Spanish            es_AR Spanish (Argentina)            es_BO Spanish (Bolivia)            es_CL Spanish (Chile)            es_CO Spanish (Colombia)            es_CR Spanish (Costa Rica)            es_DO Spanish (Dominican Republic)            es_EC Spanish (Ecuador)            es_ES Spanish (Spain)            es_ES_EURO Spanish (Spain,Euro)            es_GT Spanish (Guatemala)            es_HN Spanish (Honduras)            es_MX Spanish (Mexico)            es_NI Spanish (Nicaragua)            es_PA Spanish (Panama)            es_PE Spanish (Peru)            es_PR Spanish (Puerto Rico)            es_PY Spanish (Paraguay)            es_SV Spanish (El Salvador)            es_UY Spanish (Uruguay)            es_VE Spanish (Venezuela)            et Estonian            et_EE Estonian (Estonia)            fi Finnish            fi_FI Finnish (Finland)            fi_FI_EURO Finnish (Finland,Euro)            fr French            fr_BE French (Belgium)            fr_BE_EURO French (Belgium,Euro)            fr_CA French (Canada)            fr_CH French (Switzerland)            fr_FR French (France)            fr_FR_EURO French (France,Euro)            fr_LU French (Luxembourg)            fr_LU_EURO French (Luxembourg,Euro)            hr Croatian            hr_HR Croatian (Croatia)            hu Hungarian            hu_HU Hungarian (Hungary)            is Icelandic            is_IS Icelandic (Iceland)            it Italian            it_CH Italian (Switzerland)            it_IT Italian (Italy)            it_IT_EURO Italian (Italy,Euro)            iw Hebrew            iw_IL Hebrew (Israel)            ja Japanese            ja_JP Japanese (Japan)            ko Korean            ko_KR Korean (South Korea)            lt Lithuanian            lt_LT Lithuanian (Lithuania)            lv Latvian (Lettish)            lv_LV Latvian (Lettish) (Latvia)            mk Macedonian            mk_MK Macedonian (Macedonia)            nl Dutch            nl_BE Dutch (Belgium)            nl_BE_EURO Dutch (Belgium,Euro)            nl_NL Dutch (Netherlands)            nl_NL_EURO Dutch (Netherlands,Euro)            no Norwegian            no_NO Norwegian (Norway)            no_NO_NY Norwegian (Norway,Nynorsk)            pl Polish            pl_PL Polish (Poland)            pt Portuguese            pt_BR Portuguese (Brazil)            pt_PT Portuguese (Portugal)            pt_PT_EURO Portuguese (Portugal,Euro)            ro Romanian            ro_RO Romanian (Romania)            ru Russian            ru_RU Russian (Russia)            sh Serbo-Croatian            sh_YU Serbo-Croatian (Yugoslavia)            sk Slovak            sk_SK Slovak (Slovakia)            sl Slovenian            sl_SI Slovenian (Slovenia)            sq Albanian            sq_AL Albanian (Albania)            sr Serbian            sr_YU Serbian (Yugoslavia)            sv Swedish            sv_SE Swedish (Sweden)            th Thai            th_TH Thai (Thailand)            tr Turkish            tr_TR Turkish (Turkey)            uk Ukrainian            uk_UA Ukrainian (Ukraine)            zh Chinese            zh_CN Chinese (China)            zh_HK Chinese (Hong Kong)            zh_TW Chinese (Taiwan)            ======System property========            -- listing properties --            java.runtime.name=Java(TM) 2 Runtime Environment, Stand...            sun.boot.library.path=C:\PROGRAM FILES\JavaSOFT\JRE\1.3.0_0...            java.vm.version=1.3.0_02            java.vm.vendor=Sun Microsystems Inc.            java.vendor.url=http://java.sun.com/            path.separator=;            java.vm.name=Java HotSpot(TM) Client VM            file.encoding.pkg=sun.io            java.vm.specification.name=Java Virtual Machine Specification            user.dir=D:\java\src\char_test            java.runtime.version=1.3.0_02            java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment            os.arch=x86            java.io.tmpdir=D:\TEMP\            line.separator=                        java.vm.specification.vendor=Sun Microsystems Inc.            java.awt.fonts=            os.name=Windows 98            java.library.path=C:\WINDOWS;.;C:\WINDOWS\SYSTEM;C:\WIN...            java.specification.name=Java Platform API Specification            java.class.version=47.0            os.version=4.90            user.home=C:\WINDOWS            user.timezone=Asia/Shanghai            java.awt.printerjob=sun.awt.windows.WPrinterJob            file.encoding=Cp1252            java.specification.version=1.3            user.name=Sicci            java.class.path=d:\java\classes            java.vm.specification.version=1.0            java.home=C:\PROGRAM FILES\JavaSOFT\JRE\1.3.0_02            user.language=en            java.specification.vendor=Sun Microsystems Inc.            awt.toolkit=sun.awt.windows.WToolkit            java.vm.info=mixed mode            java.version=1.3.0_02            java.ext.dirs=C:\PROGRAM FILES\JavaSOFT\JRE\1.3.0_0...            sun.boot.class.path=C:\PROGRAM FILES\JavaSOFT\JRE\1.3.0_0...            java.vendor=Sun Microsystems Inc.            file.separator=\            java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...            sun.cpu.endian=little            sun.io.unicode.encoding=UnicodeLittle            user.region=GB            sun.cpu.isalist=pentium i486 i386            

结论1:

JVM的缺省编码方式由系统的“本地语言环境”设置确定,和操作系统的类型无关所以当设置成相同的LOCALE时,Linux和Windows下的缺省编码方式是没有区别的(可以认为cp1252=ISO-8859-1都是一样的西文编码方式,只包含255以下的拉丁字符),因此后面的测试2我只列出了GNU/Linux下LOCALE分别设置成zh_CN和en_US的测试结果输出。以下测试如果在Windows下分别按照不同的区域和字符集设置后试验的输出是一样的。

?

原文地址:http://www.cnblogs.com/panjun-Donet/articles/1144089.html

读书人网 >编程

热点推荐