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