我在这个话题上尝试过的每一个Google搜索都与我的问题相反!
我正在为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权限。我可以要求服务器管理员安装一些东西,但我想知道它会在我之前工作。
帮我堆栈溢出,你是我唯一的希望!
发布于 2014-05-28 16:42:39
因此,我终于找到了一个解决方案,是一个小问题,更好的建议是欢迎的。
我没有试图找出CR被删除的位置,而是停止强制下载带有头文件的文本文件(如上面所示),而是允许浏览器以其他方式呈现文本。IE和其他浏览器都可以在不需要任何干扰的情况下处理行尾,用户可以复制文本文件或“另存为”,并在记事本中正确显示。
不完美,但现在还行。
https://stackoverflow.com/questions/23892903
复制相似问题