gpt4 book ai didi

ruby - 撤消编码翻译

转载 作者:太空宇宙 更新时间:2023-11-03 16:30:28 27 4
gpt4 key购买 nike

我编写了一个简单的 ftp 客户端,它从客户端站点下载一些 zip 文件。出于所有意图和目的,代码如下所示:

ftp = Net::FTP.new
ftp.connect 'ftp.server.com'
ftp.login 'user', 'pwd'
ftp.binary = true
t = Tempfile.new 'file'
ftp.getbinaryfile('remotefile', nil) {|data| t << data}
t.close
ftp.close
FileUtils.mv t, '/path/to/file'

当它在 Linux 机器上运行时,它运行得很好而且花花公子,但是当代码被移动到 Windows 机器上时,二进制数据开始损坏,我必须在写入之前将临时文件设置为 binmode。

我的问题:有什么方法可以“修复”或撤消最初下载 zip 文件并损坏时完成的编码转换,以取回这些文件,基本上是从编码回到二进制?

运行代码的 Windows 框中的一些进一步信息

t = Tempfile.new('file')
t.external_encoding # -> nil
t.internal_encoding # -> nil
Encoding.default_internal # -> nil
Encoding.default_external.name # -> "IBM437"

最佳答案

我认为数据是在保存到文件时损坏的,而不是在下载时损坏的。

在 Windows 上,文本文件行用 CR+LF 分隔。如果您以文本模式打开文件并向其中写入 CR 字节,则 CR 会自动替换为 CR+LF。

Zip 文件是二进制文件。使用二进制模式来处理它们。

关于ruby - 撤消编码翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16950237/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com