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

ZDNet软件频道 时间:2002-08-06 作者:车东 |  我要评论()
本文关键词:chedong
本文通过2个测试程序说明系统缺省编码方式和应用的编码策略对字符处理的影响,以及如何选择合适的编码处理策略,构建更符合国际化规范的通用应用。
作者:车东 关键词: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() + "	" +_
            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下分别按照不同的区域设置试验的输出结果是一样的。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134