1

我通过为 xls 文件制作 erb 模板将数据导出到 Excel。这是遵循Railscast 362中推荐的用于正确编码导出的过程。

输出在 Excel for Mac 2011 中打开良好,但在 Excel 2007 中,像 é 这样的字符显示为 é,因为 Excel 将 UTF-8 编码文件解释为 Latin1。

根据这个答案,如果 UTF-8 文件以正确的字节顺序标记 (BOM) 开头,Excel 2007 将正确解释它。

看看输出的十六进制版本,它似乎确实没有 BOM。

有许多来源(例如此 Plataformatec 博客文章)解释了如何在控制器中内联呈现数据时添加 BOM:

BOM = "\377\376"
BOM + Iconv.conv('utf-16le', 'utf8', data)

我的问题是——有没有办法让 Excel 2007 正确解释模板?或者我应该回到在控制器中呈现数据吗?

4

1 回答 1

0

我不知道为什么 Excel 让这变得如此困难,但确实如此。

当我遇到此编码问题时,我自己尝试使用该代码。我不知道如何将它应用到我正在使用的东西上。所以我做了一个解决方法。

我按照 Railscast 中的说明下载了 CSV 文件。然后我用 TextWrangler 打开了文件,它正确地对其进行了编码。然后,我将内容复制并粘贴到一个空白 Excel 文档中(将其作为文本读取,因此不会弄乱编码)。之后,我选择了所有数据所属的列,然后在菜单栏中选择“数据->文本到列”。然后我选择了一个分隔列表并输入一个逗号作为分隔符(默认为制表符)。然后我完成了它,瞧,有一个格式正确的 Excel 文档。

于 2013-07-12T07:27:55.697 回答