Net::SFTP 传输模式(二进制与文本)

wma*_*but 4 ruby sftp net-sftp

有没有办法使用Ruby中的Net::SFTP库(API 链接)将传输模式设置为二进制?不幸的是,我使用的是 Windows 系统,并且正在将 UTF-8 文件上传到 Unix 系统。ruby 库显然使用 Text 作为默认传输模式,导致我的编码出现 ANSI 乱码。如果我可以强制使用二进制模式,UTF-8 应该保持不变。

谢谢

小智 6

我想我找到了解决方法。

之前,我们做了这样的事情:

sftp.file.open(filename) do |f|
  f.puts(data)
end
Run Code Online (Sandbox Code Playgroud)

我们将其更改为使用 StringIO 对象,如下所示:

require 'stringio'
io = StringIO.new(data)
sftp.upload!(io, filename)
Run Code Online (Sandbox Code Playgroud)

使用上传!方法似乎尊重编码,因为它只是复制字节。

希望有帮助。