为什么简体中文的显示语言采用ISO代码?

时间:2011-11-09 14:28:15

标签: java locale cjk iso

import java.io.UnsupportedEncodingException;
import java.util.Locale;

public final class ForeignTextDemo {

    public static void main(String[] args) throws UnsupportedEncodingException {
        Locale locale = new Locale("TW");
        System.out.println(locale.getDisplayLanguage(Locale.TRADITIONAL_CHINESE));
        locale = new Locale("CN");
        System.out.println(locale.getDisplayLanguage(Locale.SIMPLIFIED_CHINESE));
    }

}

当我运行上面的程序时,我得到以下输出:

契維文
cn

但是,如果我将第二个语言环境更改为locale = new Locale("ZH");,我会得到所需的输出:

契維文
中文

这是为什么? 我真正想要的是简体中文的显示语言。那是“ZH”吗?

2 个答案:

答案 0 :(得分:4)

只是“cn”不是语言环境,完整的本地是“zh_CN”以区分“tw_CN”。

请参阅supported locales列表。

locale1 = new Locale("zh", "cn")
println locale1.getDisplayLanguage(locale1)
println locale1.getDisplayLanguage(Locale.TRADITIONAL_CHINESE)
println locale1.getDisplayLanguage(Locale.SIMPLIFIED_CHINESE)
println locale1.getDisplayLanguage(Locale.TAIWAN)
println locale1.getDisplayCountry(locale2)
println locale1.country

println ""

locale2 = new Locale("tw", "cn")
println locale1.getDisplayLanguage(locale2)
println locale2.getDisplayLanguage(Locale.TRADITIONAL_CHINESE)
println locale2.getDisplayLanguage(Locale.SIMPLIFIED_CHINESE)
println locale2.getDisplayLanguage(Locale.TAIWAN)
println locale2.getDisplayCountry(locale2)
println locale2.country

答案 1 :(得分:2)

根据Javadoc for java.util.LocaleLocale()的单arg构造函数需要ISO 639-1 language code。中文的ISO 639-1语言代码是“ZH”。

您实际提供的“TW”和“CN”字符串是台湾和中国的ISO 3166-1国家/地区代码。