Utf 8 为什么从远程到本地的scp使用umlauts更改文件名?

Utf 8 为什么从远程到本地的scp使用umlauts更改文件名?,utf-8,filenames,scp,Utf 8,Filenames,Scp,我正在用计算机将一个Web空间从远程复制到本地 scp -r account@remote-server.de:html /path/to/copy/ 问题:umlauts的文件名发生了更改,例如remote:hörsaal.jpg/local:hèrsaal.jpg 远程服务器上的区域设置: # locale LANG=de_DE.utf8 LC_CTYPE="de_DE.utf8" LC_NUMERIC="de_DE.utf8" LC_TIME="de_DE.utf8" LC_COLLA

我正在用计算机将一个Web空间从远程复制到本地

scp -r account@remote-server.de:html /path/to/copy/
问题:umlauts的文件名发生了更改,例如remote:hörsaal.jpg/local:hèrsaal.jpg

远程服务器上的区域设置:

# locale
LANG=de_DE.utf8
LC_CTYPE="de_DE.utf8"
LC_NUMERIC="de_DE.utf8"
LC_TIME="de_DE.utf8"
LC_COLLATE="de_DE.utf8"
LC_MONETARY="de_DE.utf8"
LC_MESSAGES="de_DE.utf8"
LC_PAPER="de_DE.utf8"
LC_NAME="de_DE.utf8"
LC_ADDRESS="de_DE.utf8"
LC_TELEPHONE="de_DE.utf8"
LC_MEASUREMENT="de_DE.utf8"
LC_IDENTIFICATION="de_DE.utf8"
LC_ALL=de_DE.utf8
在本地服务器上:

# locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
当我复制输出时,我看到本地服务器上的LC_ALL是空的。 这就是问题的原因吗? 顺便说一句,我试过了

convmv  -f ISO-8859-1 -t UTF-8  hörsaal.jpg
回答(一部分):

跳过,已经是UTF-8:hÃrsaal.jpg

您是否尝试在主机系统上进行转换

convmv  -f ISO-8859-1 -t UTF-8 hörsaal.jpg
然后将数据传输到目标系统:

scp -r account@remote-server.de:html /path/to/copy/
备注我假设源系统使用ISO-8859-1作为默认文件编码,目标系统使用UTF-8作为文件编码

解决方法


重命名主机上的文件,使其不再包含ISO-8859-1特定字符。将其复制到目标计算机。

您是否尝试在主机系统上进行转换

convmv  -f ISO-8859-1 -t UTF-8 hörsaal.jpg
然后将数据传输到目标系统:

scp -r account@remote-server.de:html /path/to/copy/
备注我假设源系统使用ISO-8859-1作为默认文件编码,目标系统使用UTF-8作为文件编码

解决方法


重命名主机上的文件,使其不再包含ISO-8859-1特定字符。将其复制到目标计算机。

我无法在主机系统上运行convmv。我不是此系统的管理员,因此无法安装它。顺便说一句,这是一个高效的系统-我不想对主机进行更改。我认为你的话是对的。源系统非常旧。由于数据库中的文件存在引用,您的解决方法会破坏系统。然后在主机系统上复制该文件,重命名该文件并将其复制到目标系统。如果完整系统被克隆到新的目标系统,请使用其中的特殊字符重新命名,然后它们将以UTF-8格式。最后一次重新标记在问题中并不清楚。添加一些为什么问这个问题的原因/背景!好的,澄清一下:这是一个相当大的(>4GB)和几年前的TYPO3安装,我必须在我的开发服务器上克隆它才能完全重新启动。因此,手动重命名将是一项非常艰巨的工作。也许我必须考虑一个脚本,它可以在两台服务器上都工作。我无法在主机系统上运行convmv。我不是此系统的管理员,因此无法安装它。顺便说一句,这是一个高效的系统-我不想对主机进行更改。我认为你的话是对的。源系统非常旧。由于数据库中的文件存在引用,您的解决方法会破坏系统。然后在主机系统上复制该文件,重命名该文件并将其复制到目标系统。如果完整系统被克隆到新的目标系统,请使用其中的特殊字符重新命名,然后它们将以UTF-8格式。最后一次重新标记在问题中并不清楚。添加一些为什么问这个问题的原因/背景!好的,澄清一下:这是一个相当大的(>4GB)和几年前的TYPO3安装,我必须在我的开发服务器上克隆它才能完全重新启动。因此,手动重命名将是一项非常艰巨的工作。也许我必须考虑一个脚本,它可以在两台服务器上都工作。