我遇到了这个问题,但我真的不确定问题出在客户端还是服务器上,或者两者兼而有之。如果您能帮助我诊断和解决这个问题,我将不胜感激。
我有一台运行 Debian 的远程 Linux 机器,我经常从它那里下载文件和文件夹到 Windows 8 机器。大多数时候它都能正常工作。我使用一个允许多线程下载的下载管理器来加快下载速度。
然而,在少数情况下,Linux 上的文件名中包含非 ASCII 字符。我的下载管理器(GetRight,相当古老的一个)下载时出错了。我认为这是 GetRight 的问题,因为当我在 Putty 中 ssh 到服务器时,在 WinSCP 中文件名看起来是正确的,WinSCP 可以完美地下载它们(尽管,可惜不是以多线程方式)。
但是然后我尝试在 Windows 下使用 ftp.exe 连接到服务器,文件名也出现了混乱。
现在我决定,我只是将服务器上的文件 tar-gzip 并以此方式下载。但这也不起作用。例如在 Linux 上我有:
[jade ~/tmp] ls
тестовый
[jade ~/tmp] tar -czf ../data.tar.gz .
[jade ~/tmp]
现在我在 Windows 上下载 data.tar.gz 并尝试解压它:
E:\!2>7z x data.tar.gz
7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Processing archive: data.tar.gz
Extracting data.tar
Everything is Ok
Size: 10240
Compressed: 168
E:\!2>7z l data.tar
7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Listing archive: data.tar
--
Path = data.tar
Type = tar
Physical Size = 10240
Headers Size = 9728
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2013-01-21 17:00:10 D.... 0 0 .
2013-01-21 17:00:10 ..... 2 512 .\╤В╨╡╤Б╤В╨╛╨▓╤Л╨╣
------------------- ----- ------------ ------------ ------------------------
2 512 1 files, 1 folders
正如您所看到的,即使从等式中排除传输代理(例如 ftp 客户端/服务器),问题仍然存在。
我想集中精力研究最后一种情况,在服务器上进行 tar-gziping,在客户端进行解压,并使其正常工作。
有人能解释一下我为什么会看到这样的情况吗?是服务器的问题还是客户端的问题,还是两者都有?如何解决?
我想说的是,如果我自己创建文件,那么在窗口上我可以拥有一个具有所需文件名的文件:
E:\!2>echo a > тестовый
E:\!2>dir т*
Volume in drive E is Storage
Volume Serial Number is F41B-FF77
Directory of E:\!2
21-Jan-13 17:20 4 тестовый
1 File(s) 4 bytes
0 Dir(s) 63,511,015,424 bytes free
E:\!2>
答案1
看这个答案来解释一下发生了什么。
我建议您使用 7zip 而不是 tar,因为 7zip 似乎可以“记住”文件名使用的编码,并能很好地解压它们。我已经在瑞典非 ASCII 字符上测试过它,希望它也能为您服务。