【发布时间】: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