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

发布于 2025-01-08 20:54:09 字数 315 浏览 0 评论 0原文

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

谢谢

Is there a way using the Net::SFTP Library in Ruby (API Link) to set the Transfer Mode to Binary? I am unforunately on a windows system and am uploading a UTF-8 file to a Unix system. The ruby library apparently using Text as the default Transfer Mode and causing my encoding to get garbled with ANSI. If I can force Binary mode the UTF-8 should remain in tact.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空心↖ 2025-01-15 20:54:09

我想我找到了解决方法。

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

sftp.file.open(filename) do |f|
  f.puts(data)
end

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

require 'stringio'
io = StringIO.new(data)
sftp.upload!(io, filename)

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

希望有帮助。

I think I found a workaround.

Before, we were doing something like this:

sftp.file.open(filename) do |f|
  f.puts(data)
end

We changed this to use a StringIO object, like so:

require 'stringio'
io = StringIO.new(data)
sftp.upload!(io, filename)

Using the upload! method seems to respect the encoding as it just copies the bytes.

Hope that helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文