我在上面的区域设置的窗口7下打开Excel中的下载CSV文件时遇到问题。有时,该数字被视为日期,并且所有单元格都未对齐并且格式不正确。
我已经使用本地化格式编写了CSV下载代码。除了这个之外,它对所有地区都有效。
我投入了这个问题,并且知道在Windows 7系统上定义的格式与从ServletRequest#getLocale()检索到的挪威语,Bokmal(挪威语)的区域设置不匹配。
这是我的代码:
的Servlet
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上语言和地区的屏幕截图,其中数字数字分组符号是单个空格,十进制符号是逗号。
答案 0 :(得分: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中将小数点分隔符更改为.
,但没有效果。