我通过为 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 正确解释模板?或者我应该回到在控制器中呈现数据吗?