代码之家  ›  专栏  ›  技术社区  ›  Michael Borgwardt

导出到csv时使用什么编码?

  •  1
  • Michael Borgwardt  · 技术社区  · 15 年前

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

    问题是:哪种编码是最好的?Excel如何确定要使用的编码?它是否使用类似于Java平台默认的特定平台?

    我目前倾向于使用硬编码CP1252——它应该覆盖目标机器(实际指定了部署环境),并且可以解决测试问题。从谷歌搜索来看,Excel似乎不能很好地处理UTF-8,所以这是不可能的,而且坚持平台默认编码需要一些针对测试的变通方法。

    4 回复  |  直到 11 年前
        1
  •  1
  •   Yishai    15 年前

    我希望Excel能够很好地与平台默认编码配合使用,因此在一般情况下,坚持这一点似乎是Excel的最佳选择。检查平台的默认值是否为US-ASCII,并使用CP1252(我猜测试的hack)在概念上等同于取消编译器警告。你知道在这种情况下不适用。

    但是,既然您编写了控制生产部署的代码,那么为什么您会犹豫硬编码CP1252呢?如果这是应用程序的目标编码,那么这似乎是一个完全合理的解决方案。

        2
  •  0
  •   Alexey Sviridov    15 年前

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

        3
  •  0
  •   Glen    15 年前

    认为Excel与UTF-16很好地配合使用。用UTF-16导出有什么问题。至少这样,非ASCII字符将被保留,而不仅仅是丢弃它们。

    编辑,好吧,“好吧”可能会夸大Excel与UTF-16的工作方式,但看起来UTF-16LE比UTF-8工作得更好。

        4
  •  0
  •   user2651478    11 年前

    UTF-8现在应该可以很好地工作了。我刮取了产品,然后将它们保存为csv,使用wp all import,然后上传这个csv,所有这些转换为xml,然后全部上传为wp posts。伟大的!看一看 jam tangan casio