在操作SFTP时,中文乱码

在用 jsch 操作 SFTP的时候,如果jar包版本时3-5,

都不允许修改编码.

jar包默认是UTF-8.

但中文都会乱码.

我们设置编码,是没有效果的.

这时候有朋友就采用换jar包的方式.

让版本不是3-5的.

其实可以通过反射来修改版本号,

从而修改编码.

//利用反射修改版本编号
Class<ChannelSftp> c = ChannelSftp.class;
f = c.getDeclaredField("server_version");
f.setAccessible(true);
f.set(chSftp, 2);
chSftp.setFilenameEncoding("gbk");

Vector<LsEntry> ls = chSftp.ls(path);

LsEntry是他的内部类.

---工作中记录.

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Hutool SFTP中解决中文乱码问题有几种方法可以尝试。 首先,根据引用[1],尝试使用`sftp.setFilenameEncoding("GBK")`来设置文件名编码。但是根据该引用所述,这种方法可能不起作用。如果这种方法没有解决问题,可以尝试下面的方法。 其次,根据引用,FTP服务器默认的编码是ISO-8859-1,而Hutool SFTP在初始化默认也是使用ISO-8859-1编码。如果文件名是乱码的,可以使用`CharsetUtil.convert(name, CharsetUtil.CHARSET_ISO_8859_1, CharsetUtil.CHARSET_GBK)`将文件名转换为GBK编码。这样可以解决中文乱码问题。 另外,根据引用,如果全部都设置成UTF-8也是可以的。你可以尝试设置`client.setAutodetectUTF8(true)`来开启自动检测UTF-8编码,并且使用`client.setControlEncoding(CharsetUtil.UTF_8)`将控制编码设置为UTF-8。如果FTP服务器和客户端都支持UTF-8,那么中文乱码问题应该就能够解决了。 综上所述,你可以尝试以下方法来解决Hutool SFTP中的中文乱码问题: 1. 使用`sftp.setFilenameEncoding("GBK")`来设置文件名编码,如果不起作用则尝试下面的方法。 2. 使用`CharsetUtil.convert(name, CharsetUtil.CHARSET_ISO_8859_1, CharsetUtil.CHARSET_GBK)`将文件名转换为GBK编码。 3. 设置`client.setAutodetectUTF8(true)`并使用`client.setControlEncoding(CharsetUtil.UTF_8)`将控制编码设置为UTF-8。 希望这些方法能够帮助你解决Hutool SFTP中的中文乱码问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值