Rails Excel 2007导出:将字节顺序标记添加到.erb模板

我正在通过为xls文件创build一个erb模板来将数据导出到Excel。 这是Railscast 362中build议的程序,用于正确编码输出。

输出在Excel 2011 for Mac 2011中正常打开,但在Excel 2007中,字符显示为é,因为UTF-8编码的文件被Excel解释为Latin1。

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

看看输出的hex版本,似乎确实没有BOM。

有许多来源(如Plataformat博客文章 )解释了如何在控制器内嵌数据时添加BOM:

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

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

我不知道为什么Excel这么难,但他们这样做。

当我遇到这个编码问题时,我尝试使用该代码。 我无法弄清楚如何将它应用到我正在使用的东西上。 所以我做了一个解决方法。

我下载了Railscast中的CSV文件。 然后我用TextWrangler打开这个文件,它正确编码它。 然后,我将这些内容复制并粘贴到一个空白的Excel文档(将其作为文本读取,因此不会搞乱编码)。 接下来,我选中了列中的所有数据,然后在菜单栏中select了“数据 – >文本到列”。 然后,我select了一个分隔列表,并input一个逗号作为分隔符(它默认为一个标签)。 然后我完成了,瞧,有一个格式正确的Excel文件。