是否有可能强制Excel识别UTF

我正在开发负责将一些数据导出到CSV文件的应用程序的一部分。 该应用程序总是使用UTF-8,因为它在各个层面都具有多语言特性。 但是,在Excel中打开这样的CSV文件(包含例如变音符号,西里尔文字母,希腊字母)并没有达到预期结果,显示类似Г„/Г¤, Г–/Г¶ 。 我不知道如何强制Excel了解开放的CSV文件是以UTF-8编码的。 我也试过指定UTF-8 BOM EF BB BF ,但Excel忽略了这一点。

有什么解决方法吗?

PS哪些工具可能会像Excel一样行事?


UPDATE

我不得不说,我已经将社群与问题的表述混为一谈了。 当我提出这个问题时,我要求以流畅透明的方式在Excel中打开UTF-8 CSV文件,而不会对用户造成任何问题。 但是,我使用了一个错误的表述,要求自动进行。 这非常令人困惑,它与VBA宏自动化相冲突。 对于这个我最欣赏的问题有两个答案:Alex的第一个答案https://stackoverflow.com/a/6002338/166589,我已经接受了这个答案; 第二个是Mark https://stackoverflow.com/a/6488070/166589,稍后才出现。 从可用性的角度来看,Excel似乎缺乏用户友好的UTF-8 CSV支持,所以我认为这两个答案都是正确的,我首先接受了Alex的答案,因为它确实表明Excel无法做到透明。 这就是我在这里自动混淆的地方。 马克的答案为更高级的用户提供了一种更复杂的方式来实现预期的结果。 两个答案都很好,但是Alex的一个答案更适合我的不明确的问题。


更新2

在最后一次编辑五个月后,我注意到Alex的答案因为某种原因已经消失。 我真的希望这不是一个技术问题,我希望现在没有更多的讨论关于哪个答案更好。 所以我接受Mark的答案是最好的答案。


亚历克斯是正确的,但是因为您必须导出到csv,您可以在打开csv文件时为用户提供以下建议:

  • 将导出的文件保存为csv
  • 打开Excel
  • 使用数据导入数据 - >导入外部数据 - >导入数据
  • 选择“csv”的文件类型并浏览到您的文件
  • 在导入向导中,将File_Origin更改为“65001 UTF”(或选择正确的语言字符标识符)
  • 将分隔符更改为逗号
  • 选择要导入到的位置和完成
  • 这样特殊字符应该正确显示。


    UTF-8字节顺序标记可以帮助您了解您使用UTF-8的事实。 (看到这个SO帖子)。

    如果有人遇到同样的问题,.NET的UTF8编码类即使在明确告诉它的构造函数时也不会输出字节顺序标记。 如果你想用字节顺序标记保存,你必须使用这种解决方法。


    忽略物料清单的错误似乎在Excel 2013中是固定的。我与西里尔字母有相同的问题,但添加BOM字符uFEFF确实有帮助。

    链接地址: http://www.djcxy.com/p/45459.html

    上一篇: Is it possible to force Excel recognize UTF

    下一篇: Downloading Amazon S3 objects, Windows says files are corrupted