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

Ruby on rails Rails Excel 2007导出:将字节顺序标记添加到.erb模板,ruby-on-rails,excel,excel-2007,Ruby On Rails,Excel,Excel 2007,我正在通过为xls文件制作erb模板将数据导出到Excel。这遵循中建议的程序进行正确编码的导出 输出在Excel for Mac 2011中可以正常打开,但在Excel 2007中,像é这样的字符显示为é因为UTF-8编码文件被Excel解释为Latin1 根据Excel 2007,如果UTF-8文件以正确的字节顺序标记BOM开头,则将正确解释该文件 看看输出的十六进制版本,它似乎确实没有BOM表 有许多类似的源代码解释了在控制器内联呈现数据时如何添加BOM表: BOM = "\377\37

我正在通过为xls文件制作erb模板将数据导出到Excel。这遵循中建议的程序进行正确编码的导出

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

根据Excel 2007,如果UTF-8文件以正确的字节顺序标记BOM开头,则将正确解释该文件

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

有许多类似的源代码解释了在控制器内联呈现数据时如何添加BOM表:

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

我的问题是–有没有办法让Excel 2007正确解释模板?或者我应该继续在控制器中渲染数据吗?

我不知道为什么Excel会让这变得如此困难,但他们做到了

当我遇到这种编码问题时,我自己也尝试过使用这种代码。我不知道如何将它应用到我的工作中。所以我做了一个变通办法

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