首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java-8语言环境中,对象在某些语言代码中转换为旧的ISO。如何在不更新Java版本的情况下修复此问题?

在Java-8语言环境中,对象在某些语言代码中转换为旧的ISO。如何在不更新Java版本的情况下修复此问题?
EN

Stack Overflow用户
提问于 2021-12-10 16:40:11
回答 1查看 139关注 0票数 0

就像当我接受输入(he-IL)时,输出就像"iw_IL“。但我不想把这个转换成旧的。

代码语言:javascript
复制
public static void main(String[] args) {
    Locale locale = getLocaleIn("he-IL");
    System.out.println(locale.toString());
}
private static Locale getLocaleIn(String langCode) {
    LocaleCode code = LocaleCode.getByCodeIgnoreCase(langCode);
    Locale locale = code.toLocale();
    return locale;
}

OutPut:iw_IL,预期产出:he-IL

主要问题在这里,在Java Locale.Class:

最后,我想要一个区域设置对象,而不需要转换为旧的.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-13 09:18:41

您应该避免在问题描述中使用非标准的第三方类,特别是当它们根本没有造成问题时。

我们可以简单地使用

代码语言:javascript
复制
Locale locale = new Locale("he", "IL");
System.out.println(locale.toString());
locale = new Locale("iw", "IL");
System.out.println(locale.toString());

并获取

代码语言:javascript
复制
iw_IL
iw_IL

在JDK 8下,与文献资料保持一致。

此构造函数同时接受旧代码("iw“、"ji”和"in")和新代码("he“、"yi”和"id"),但是Locale上的所有其他API只返回旧代码。

这改变了与JDK 17

过时的ISO 639代码("iw“、"ji”和"in")映射到它们当前的格式。

并使用JDK 17运行相同的示例程序,因此现在打印

代码语言:javascript
复制
he_IL
he_IL

因此,最干净也可能是唯一的解决方案就是更新Java版本。任何迫使Locale返回旧版本中的新代码的修补程序都可能会导致与依赖于旧行为的运行时其他组件的兼容性问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70307754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档