好吧,我认为这是一个严肃的话题!
问题是在 Windows 中,有 Excel。许多程序必须与之交互。Excel 使用列表分隔符区域设置(单元格分隔)。
基本问题是“逗号分隔值”在美国(西班牙语(美国))和英语之外不起作用,因为您不能使用与小数分隔符相同的列表分隔符。因此,美国和英语以外的世界(包括(应该)遵循北约语言环境、十进制逗号等和 ISO 措施的美国军队)使用;
列表分隔符来分隔电子表格中的单元格,而不是将其与十进制逗号混淆。
所以一般来说,列表分隔符的区域设置 Windows 设置;
除了英语或美国列表分隔符是,
.
Excel 有其美国/英语 CSV 的不便之处,特别是;在默认的美国和英语设置中,相同的字符,
是千位分隔符,而 Excel 会发疯(单元格在使用它的情况下导入 CSV)。跳过千位分隔符(当它与列表分隔符相同时) Excel 不识别货币单元格并将它们作为文本。我们必须在美国和英国环境中使用的东西,否则在世界范围内它可以正常工作(使用;
)。
有趣的事情(有趣的想法)是 Windows 中的 Java 是否支持具有 Win32 库访问权限的 NDK?因为在 Win32 中你调用
GetLocaleInfoEx(LOCALE_NAME_USER_DEFAULT, LOCALE_SLIST, pwListSeparator, 4);
我找不到获取列表分隔符的 Java 解决方案?
我的建议是使用硬编码的一般规则,将列表分隔符设置为;
小数点分隔符,,
否则将列表分隔符设置为,
如果在 Win32 等语言环境方法或设置中找不到另一个字符。如果千位分隔符与列表分隔符相同,则删除(不要使用)千位分隔符。
还是使用选项卡式文本文件?唯一的不便是 Windows 默认使用 ShellExecute(0, 0, pwFileName, 0, 0, SW_SHOW); 在 .csv 文件上打开 Excel,在 .txt 文件上打开记事本。
值得注意的是Java中存在小数分隔符和千位分隔符,我猜应该使用:
import java.text.DecimalFormatSymbols;
new DecimalFormatSymbols().getDecimalSeparator();
new DecimalFormatSymbols().getGroupingSeparator();