Rails CSV 导出到 excel 会产生特殊的 Â 和 & 字符
Posted
技术标签:
【中文标题】Rails CSV 导出到 excel 会产生特殊的  和 & 字符【英文标题】:Rails CSV exporting into excel produces special  and & characters 【发布时间】:2017-08-24 03:13:18 【问题描述】:我有一个 Rails 项目,它将一些 csv 数据导出到 excel 中。在某些情况下,excel 会输出特殊字符。
例如。
test 1 & test 2 & test 2
在excel中读取为
test 1 & test 2 & test 2Â
我的默认 CSV 编码设置为 UTF-8,我尝试了许多其他编码设置,但似乎都没有解决这个问题。
这里是生成 csv 的地方。
<% headers = default_headers %>
<%= CSV.generate_line(headers).strip %>
<% @activities.each do |activity| %>
<% has_permission = @_controller.is_activity_permissioned_to_user?(activity, current_user) %>
<% row = activity_generate_csv_row_data(activity, headers, has_permission, preferences) %>
<%= CSV.generate_line(row).gsub(/\A""/,'').strip.html_safe %>
<% end %>
在我的控制器中。
format.csv
headers['Content-Disposition'] = "attachment; filename=\"
report_name.csv\""
headers['Content-Type'] ||= 'text/csv'
我尝试过的每个解决方案都失败了。我真的不知道如何解决这个问题。
【问题讨论】:
【参考方案1】:尝试将字节顺序标记字符串与您的 CSV 字符串连接起来,例如:
BOM = "\uFEFF"
def some_csv_string_generating_func
...
return BOM + a_csv_string
end
这将使 Excel 正确显示 CSV 文件。
另外,我建议不要将所有 CSV 生成逻辑/代码放在视图上,而是放在辅助类/模块等上。
【讨论】:
以上是关于Rails CSV 导出到 excel 会产生特殊的 Â 和 & 字符的主要内容,如果未能解决你的问题,请参考以下文章