Ruby Net::SSH 编码问题

slertness · 2013年06月16日 · 最后由 fsword 回复于 2015年02月10日 · 4446 次阅读

我程序的编码是 UTF-8 的,我发现只要存在中文时,Net::SSH 中的操作就不能正常执行。

1.使用 ssh.exec! 执行 mkdir 命令,文件名不包含中文时正常,包含中文时,只是长时间无响应,不报错。

2.使用 scp 或者 sftp 上传文件,文件名不包含中文时正常,包含中文时报错: ……/gems/net-ssh-2.6.7/lib/net/ssh/buffer.rb:284:in 'block in wirte':incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)

是不是因为 Net::SSH 内部使用的是 ASCII-8BIT 编码?请问我该如何解决这个问题。

ssh.exec!("mkdir 我的目录".force_encoding("ASCII-8BIT"))

#1 楼 @lululau 我也遇到这个问题了,虽然现在也改好了,但是这个错误没理解,net-ssh 在哪里设定了缺省的编码?另外如果这是个 bug,那我们提一个 mr 建议修复吧

需要 登录 后方可回复, 如果你还没有账号请 注册新账号