【问题标题】:Locale for Norwegian, Bokmal(Norway) issue挪威语,Bokmal(挪威)问题的语言环境
【发布时间】:2014-06-29 21:52:08
【问题描述】:

我在 Excel 中打开下载的 CSV 文件时遇到问题,在窗口 7 下为上述区域设置。有时数字被视为日期,所有单元格都未对齐且格式不正确。

我已经编写了本地化格式的 CSV 下载代码。它适用于除此之外的所有地区。

我投资了这个问题,发现在 Windows 7 系统上定义的格式与从ServletRequest#getLocale() 检索到的 Norwegian, Bokmal(Norway) 的区域设置不匹配。

这是我的代码:

小服务程序:

Locale locale = request.getLocale();
DecimalFormat decimalFormatter=(DecimalFormat)DecimalFormat.getInstance(locale);

locale.getDisplayCountry();            // empty string
decimalFormatter.toLocalizedPattern(); // #,##0.###
locale.getDisplayLanguage();           // Norwegian Bokmål
locale.toString();                     // nb

现在看看上面代码中的数字分组符号十进制符号


我的问题:如何获得正确的数字格式模式,就像在 Windows 7 上一样?

这是 Firefox 中设置的语言的屏幕截图。

这是 Windows 7 上的语言和区域的屏幕截图,其中对于数字,数字分组符号是一个空格,十进制符号是一个逗号。

【问题讨论】:

  • 如果您希望它对挪威语正确,则单个空格和小数点逗号是正确的
  • decimalFormatter.getDecimalFormatSymbols().getGroupingSeparator()decimalFormatter.getDecimalFormatSymbols().getDecimalSeparator() 返回什么? toLocalizedPattern() 只是小数格式的一部分,符号是另一部分。
  • @nos 和你的建议结果一样。 :( 如何获得 Norwegian, Bokmal(Norway) 的正确数字格式?
  • @nos 让我再检查一次。是的,问题在于 Excel 打开 CSV 文件,但如果 CSV 根据客户端系统的区域设置正确格式化,则可以解决。
  • 我使用的是 JDK 1.6.0_23

标签: java windows servlets locale number-formatting


【解决方案1】:

十进制格式的语言应该直接“开箱即用”。

    Locale locale = new Locale("nb");
    DecimalFormat decimalFormatter=(DecimalFormat) DecimalFormat.getInstance(locale);

    System.out.println(locale.getDisplayCountry());           
    System.out.println(decimalFormatter.toLocalizedPattern()); 
    System.out.println(decimalFormatter.toLocalizedPattern()); 
    System.out.println(locale.getDisplayLanguage());        

    System.out.println(decimalFormatter.format(1234.567));

为我得到这个结果:

(empty)
# ##0,###
# ##0,###
Norwegian Bokmål
1 234,567

虽然windows设置不控制十进制格式,但是尝试在windows中将小数分隔符改为.,没有效果。

【讨论】:

  • 谢谢,但我的问题是在 Windows 7 下使用提到的语言环境打开一个 csv 文件。我已经更新了我的帖子。
  • 我知道十进制格式不受 Windows 设置的控制,这就是为什么我粘贴了 Firefox 语言首选项的屏幕截图。
  • 如果你在 Servlet 中尝试,那么你会得到不同的结果,如我的帖子所示。可能你已经尝试过将它作为独立的 JAVA 应用程序。
  • @Tobb 语言环境已创建 (new),所以它是相同的,但是,DecimalFormat/NumberFormat 被查找,所以它们可能不同,如果服务器提供自己的实现.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多