【发布时间】:2011-08-25 12:38:33
【问题描述】:
我正在开发负责将一些数据导出到 CSV 文件的应用程序的一部分。该应用程序始终使用 UTF-8,因为它在所有级别都具有多语言特性。但在 Excel 中打开此类 CSV 文件(包含例如变音符号、西里尔字母、希腊字母)并不能达到显示类似 Г„/Г¤, Г–/Г¶ 的预期结果。而且我不知道如何强制 Excel 理解打开的 CSV 文件是用 UTF-8 编码的。我也尝试指定 UTF-8 BOM EF BB BF,但 Excel 忽略了这一点。
有什么解决办法吗?
附:哪些工具的行为可能与 Excel 类似?
更新
我不得不说我把社区和问题的表述搞混了。当我问这个问题时,我要求一种在 Excel 中以流畅和透明的方式打开 UTF-8 CSV 文件的方法,对用户没有任何问题。但是,我使用了一个错误的表述,要求自动进行。这非常令人困惑,并且与 VBA 宏自动化相冲突。这个问题有两个我最欣赏的答案:Alex https://stackoverflow.com/a/6002338/166589 的第一个答案,我已经接受了这个答案;第二个由 Mark https://stackoverflow.com/a/6488070/166589 稍后出现。从可用性的角度来看,Excel 似乎缺乏对用户友好的 UTF-8 CSV 支持,所以我认为 both 答案都是正确的,我首先接受了 Alex 的答案,因为它确实说明了Excel 无法透明地做到这一点。这就是我在这里与 automatically 混淆的地方。马克的回答为更高级的用户提供了一种更复杂的方法来达到预期的结果。两个答案都很好,但亚历克斯的答案更适合我没有明确指定的问题。
更新 2
在上次编辑五个月后,我注意到 Alex 的答案由于某种原因消失了。我真的希望这不是一个技术问题,我希望现在不再讨论哪个答案更好。所以我接受马克的回答是最好的。
【问题讨论】:
-
可以使用制表符分隔的文件吗?如果是这样,你可能会有更多的运气。
-
Office 2010+:最佳作品:UTF-16LE,带有 BOM 和
\t作为分隔符。将在英语和非英语 Excel 设置中工作。可以在不选择文件格式等的情况下按Ctrl-S。将保留Unicode字符。 -
@Duncan 坦率地说,我很困惑,很难“判断”。我在 2 年多前接受了 alex 的回答(5 月 14 日的 Q 和 A),然后 Mark 回答提出了一个棘手的解决方法(我实际上没有检查它),令人惊讶地在我的问题上得分更高,令人惊讶地变成了也很受欢迎。实际上,很久以前我们在我的项目中拒绝了 Excel 支持,我不想拿走 alex 的声誉评分,因为 Excel 似乎并且可能仍然似乎(如果我错了,请纠正我)错误处理 CSV。很难说,对不起。
-
Alex 的回答已被版主删除。没有给出任何解释,但如果你有足够的声望你仍然可以看到它。
-
既然时间机器还不存在,那就只能不同意了。