使用PhpStorm / WinSCP和SFTP进行错误的文件编码

时间:2016-07-27 16:24:57

标签: encoding utf-8 phpstorm sftp

我的主机已禁用FTP所以我被迫使用SFTP但是自从转移到SFTP后我遇到了一些与PhpStorm有关的奇怪问题。我的文件名有时会包含德语变音符号,如LösungsblattÜbungsblatt,通常它已正确上传,主机窗口正确显示文件。由于我被迫在远程主机上使用SFTP旧文件显示为此

enter image description here

新上传的文件在PhpStorm中正确显示。但是在WinSCP中,旧文件正确显示为Lösungsblatt-01.pdf等,但似乎通过PhpStorm正确上传的文件因为显示为

而被破坏

enter image description here

基本上是另一种方式。我确实感觉在上传过程中混合了UTF-8和UTF-16文件名,所以我很好奇如何设置IDE以便(1)正确显示远程树中的文件名(2)使用正确的编码正确上传文件(不是内容的编码,而是文件名本身的编码!)

1 个答案:

答案 0 :(得分:0)

在SFTP协议中,文件名必须是UTF-8。虽然实际上只是从版本4开始。旧版本没有强制要求特定的编码。所以实施方式各不有些使用UTF-8,但许多(可能是大多数)使用系统的默认编码(如默认的Windows Ansi编码)。

最新版本的WinSCP始终使用UTF-8,即使是实施SFTP版本3(或更早版本)的服务器,如OpenSSH。实际上OpenSSH没有关于编码的视图。它使用底层系统使用的任何编码。由于目前大多数* nix系统默认使用UTF-8,它只是有效。

我的猜测是PhpStorm实际上使用Windows的默认Ansi编码(对于“西方语言”,Windows-1252会是什么)。您也可以通过将"UTF-8 encoding for filenames"设置为“关闭”来强制WinSCP使用它。虽然你实际上应该强迫PhpStorm使用UTF-8。