Rails CSV 导出到 excel 会产生特殊的 Â 和 &amp 字符

Posted

技术标签:

【中文标题】Rails CSV 导出到 excel 会产生特殊的  和 &amp 字符【英文标题】:Rails CSV exporting into excel produces special  and &amp 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 会产生特殊的 Â 和 &amp 字符的主要内容,如果未能解决你的问题,请参考以下文章

请求rails时编码xls文件

phpmyadmin 导出 CSV 到 excel 删除数据

PHP 和 JS 导入导出csv表格(上)

PHP 和 JS 导入导出csv表格(上)

Laravel DataTables 大型导出

PHP导出100万数据到excel