我正在开发一个将数据导出到CSV文件的Java应用程序,旨在由最终用户在Excel中打开。我们刚刚注意到导出函数使用Java的平台默认编码。这会导致元变量字符丢失,并且构建服务器上的单元测试失败(配置为将US-ASCII作为其平台默认编码,以准确捕获此类潜在问题)。

问题是:哪种编码最好? Excel如何确定要使用的编码?它是否使用特定于平台的东西,可能与Java的平台默认值匹配?

我目前倾向于硬编码Cp1252--它应该覆盖目标计算机(实际指定部署环境)并修复测试问题。从谷歌搜索,Excel似乎没有很好地处理UTF-8,所以这样,并坚持平台默认编码将需要某种解决方法黑客测试。

有帮助吗?

解决方案

我希望Excel能够很好地使用平台默认编码,所以坚持使用它似乎是一般情况下Excel的最佳选择。检查平台默认是US-ASCII并使用Cp1252代替(我猜测试的黑客攻击)将是概念上等同于抑制编译器警告。你知道它不适用于这种情况。

但是,既然你说你控制了生产部署,为什么你会犹豫硬编码Cp1252?如果这是应用程序的目标编码,这似乎是一个非常合理的解决方案。

其他提示

您可以获取系统区域设置(来自系统属性)并使用该编码创建输出文件。如果您的文件只在Excel中打开,您可能需要查看Apache POI吗?

Think Excel适用于UTF-16。以UTF-16导出出了什么问题。至少这样会保留非ascii字符,而不是将它们扔掉。

编辑,好吧,'好'可能会夸大excel如何与UTF-16一起使用,但似乎UTF-16LE仍然比UTF-8效果更好

UTF-8现在应该运作良好。我抓取产品然后将它们保存为CSV,使用WP All Import然后上传此CSV,所有这些转换为XML然后全部上传为WP帖子。大!看看 jam tangan casio

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top