行结束问题

时间:2011-04-11 16:43:55

标签: ruby

我正在尝试使用gmail gem从我的Gmail帐户下载图片。它工作正常,除了通过gem下载的文件有CR + LF行结尾,实际文件有LF行结尾。

为什么会这样?我该如何解决?

3 个答案:

答案 0 :(得分:1)

你在Mac上吗?我怀疑GMail会为您提供基于浏览器用户代理的LF线路结尾。

在任何情况下,问题的正确解决方案是使用universal_newline转换器转换文本。请参阅此处的ruby内置转换器文档:http://ruby-doc.org/core-1.9/classes/Encoding/Converter.html

答案 1 :(得分:1)

如果是文本文件,则行结尾由MIME指定,编码可能由文件的发件人(http://en.wikipedia.org/wiki/MIME#Content-Transfer-Encoding)进行。

至于如何修复它,Alex Lebedev有一个很好的选择。您也可以使用Ruby MIME gems进行转换。

但是,如果要下载图像,Base64编码应该能够适应行尾问题。

希望有所帮助。这个问题对我来说有点模糊,因为我们正在讨论行结尾和图像文件(它们没有CRLF结尾作为其编码的正常部分)。 :)

答案 2 :(得分:0)

最简单的解决方法可能是取结果而不是:

text.gsub! "\r\n", "\n"