我在这个主题上尝试的每一个谷歌搜索都提出了与我的问题相反的问题!
我正在为 Web 服务的用户构建一个可下载的动态文本文件,以便他们可以导出数据。我正在使用标准的 MVC 行为来动态编写文本文件,设置标题以强制在控制器中像这样下载文件:
headers["Content-Disposition"] = "attachment; filename=#{filename}.txt"
我遇到了一个问题,Windows 最终用户正在下载文件并用记事本打开它——所有的行尾都被删除了,这只是一个大混乱。
我已经以尽可能多的不同方式重新创建了我的视图文件,将它保存为不同的编码,在 Windows 机器上重新创建它,并三重检查它是否在每一行的末尾都有 CRLF。
cat -v app/views/export/export.text.erb
显示了这一点:
<%= session.user.username %>'s Data^M
<%= @posts.count %> Posts^M
^M
<% @posts.each do |post| -%>^M
Prompt: <%= post.prompt.title %>^M
Prompt subtitle: <%= post.prompt.subtitle %>^M
^M
Title: <%= post.title %>^M
Subtitle: <%= post.subtitle %>^M
Created: <%= post.created_at.to_s %>^M
Updated: <%= post.updated_at.to_s %>^M
Type: <%= post.type %>^M
Content:^M
<%= JSON.pretty_generate(post.fields) %>^M
^M
===^M
^M
<% end %>^M
我不能要求 Windows 用户使用其他文本阅读器。以前必须有人解决过这个问题。这个问题的另一面:我在这台服务器上没有 sudo 权限。我可能会要求服务器管理员安装一些东西,但我想在我这样做之前知道它会起作用。
帮助我 Stack Overflow,你是我唯一的希望!