有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么简体中文的显示语言采用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) 个答案

  1. # 1 楼答案

    只是“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
    
  2. # 2 楼答案

    根据Javadoc for ^{},用于Locale()的单个arg构造函数需要一个ISO 639-1 language code。ISO 639-1中文语言代码为“ZH”

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