首页 新闻 赞助 找找看

C# 使用sftp下载,循环文件名 遇到中文乱码

0
[已解决问题] 解决于 2019-08-07 12:02

这个好奇怪,下载的时候,他会中文转换成英文,只有那些转换不出来的才会变成乱码,然后乱码就报错了,,请问有没有人用C# 写过这个?

永远跟党走i的主页 永远跟党走i | 小虾三级 | 园豆:1517
提问于:2019-08-02 15:31
< >
分享
最佳答案
0

用第三方类库Tamir.SharpSSH.dll,我就是用这个,目前没发现有什么问题
SFTP类可以参考:https://blog.csdn.net/angle_greensky110/article/details/45392663

奖励园豆:5
Luckyfish小文 | 菜鸟二级 |园豆:335 | 2019-08-05 15:31

我就是用这个,你在下载的时候,没有产生中文乱码的原因?
中文都乱码

永远跟党走i | 园豆:1517 (小虾三级) | 2019-08-05 15:44

@Cgrain: 不会呀,我是先获取SFTP上指定的文件类型的列表,显示在listboxh 上,再根据选择下载

Luckyfish小文 | 园豆:335 (菜鸟二级) | 2019-08-05 16:17

@Luckyfish小文: 我看了一下,发现是从获取列表这里就已经乱码了,不知道是什么原因

永远跟党走i | 园豆:1517 (小虾三级) | 2019-08-05 16:33

@Cgrain: 是的,输出编码问题,读取的时候设定编码,我改了下代码(UTF-8好像还是乱码,所以我改用GB):

下午又试了下,utf也可以,但string要对应getStringUTF8:
byte[] buf = Encoding.GetEncoding("utf-8").GetBytes(src);
string getStr = Tamir.SharpSsh.java.String.getStringUTF8(buf);

Luckyfish小文 | 园豆:335 (菜鸟二级) | 2019-08-06 09:07

@Luckyfish小文: 你这个跟我这个博客写的解决方案差不多,我也百度收到了,请问你文件上传这里是怎么做的,是用循环遍历上传,还是怎么弄的,我这里使用循环遍历上传,可是遇到了:“当文件有点大了,预计是因为上传时间就了,然后 就跳过了这个文件上传,可是我打断点了,就能全部上传,你知道如何设置每个文件上传完毕才能上传下一个文件嘛”?

永远跟党走i | 园豆:1517 (小虾三级) | 2019-08-06 16:23

@Luckyfish小文: 你用这个方法的话,只能上传某种文件后缀的文件吧,我把这个方法重载了,可以遍历出,一个文件夹下面的所有文件,排除文件夹

永远跟党走i | 园豆:1517 (小虾三级) | 2019-08-06 16:24

@Cgrain: 我看了下amir.SharpSSH.dll里SFTP里面,是没有上传大小限制的,你未上传成功一个可能是SFTP服务器或者其它网络异常;你可以跳过文件继续上传,也说明不是限制问题,否则就会报错了。
至于按顺序上传文件的做法:
一种方法:你可以在调用用put的时,用迭代遍历你上传的文件,每PUT一个文件后,执行continue;
另一种方法:用线程同步调用put,这样也可以达到你的目的

Luckyfish小文 | 园豆:335 (菜鸟二级) | 2019-08-07 09:39

@Cgrain:是的,我的程序对上传后缀是有限制的, 你不限制的话,也很简单,无需重载,直接去掉fileType和if判断就可以了,这个和File遍历文件的方法是一样的

Luckyfish小文 | 园豆:335 (菜鸟二级) | 2019-08-07 09:43

@Luckyfish小文: 我待会 试试 用线程的, 好的,谢谢了

永远跟党走i | 园豆:1517 (小虾三级) | 2019-08-07 12:01
其他回答(2)
0

应该在获取时指定字符串编码

星星点灯6 | 园豆:164 (初学一级) | 2019-08-05 08:52

https://www.cnblogs.com/TF12138/p/4178252.html 用他这个类的, 中文下载乱码,上传不会,而且还不能移动文件。。

支持(0) 反对(0) 永远跟党走i | 园豆:1517 (小虾三级) | 2019-08-05 11:53

谢谢您的帮助

支持(0) 反对(0) 永远跟党走i | 园豆:1517 (小虾三级) | 2019-08-07 12:02
0

无法解决,要看上传的人。意思是,可能这个人给文件命名时一半是utf-8一半是unicode。所以你要在乱码部分再针对解码

舟翅桐 | 园豆:675 (小虾三级) | 2019-08-07 18:04

自己上传文件测试了一下,这个问题真的非常的奇怪,目前测试,发现乱码无法解决的文件名字 叫 xxxx单1 ,这个单1 解析就会乱码 单_1 解析出来正常。。。。 单sd1 没问题 ,唯独 ”单1“

支持(0) 反对(0) 永远跟党走i | 园豆:1517 (小虾三级) | 2019-08-08 16:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册