众所周知,Windows在文件系统中使用ANSII对文件名进行编码,而Linux默认使用UTF-8。当我使用 SCP 或 FTP/SFTP 将文件从 Windows 传输到 Linux 时,传输的文件仍将采用 ANSII 编码。我希望我的 Linux 仅使用 UTF-8,那么如何在传输时重新编码文件名? 我知道有转换工具,但是我传输的时候可以自动转换吗?
到目前为止我只找到了单个文件传输的解决方案:之前通过 iconv 手动翻译文件名,比如
scp $origFile user@remotesystem:c:/temp/$( basename "$origFile" | iconv -t ISO-8859-15 -f UTF-8 )
或使用 ssh 并通过 stdin 进行数据传输(允许更大的灵活性,例如权限修改)。
(原问题的方向需要改变,我的例子显然是从Linux到Windows)。
我的方式
GMA
这是将文件从 Windows 传输到 Linux 时发生的已知情况。
实用程序 dos2unix 和 unix2dos 可用于从 Unix 命令行转换文件。
要将 Windows 文件转换为 Unix 文件,请输入:
dos2unix winfile.txt unixfile.txt
要将 Unix 文件转换为 Windows,请输入:
unix2dos unixfile.txt winfile.txt