错误的文件名编码与PhpStorm/WinSCP和SFTP
我的主机已禁用FTP,所以我不得不使用SFTP,但自从转移到SFTP后,我遇到了PhpStorm的一些奇怪问题。我的文件名有时候会有德文变音符号,例如Lösungsblatt
或Übungsblatt
,通常它会正确上传,并且主窗口会正确显示文件。因为我被迫使用远程主机上的SFTP旧的文件显示,因为这错误的文件名编码与PhpStorm/WinSCP和SFTP
而新上传的文件里面PhpStorm正确显示。然而,在WinSCP赋予旧文件被正确地显示为Lösungsblatt-01.pdf
等,但这似乎文件正确通过PhpStorm因为它们显示为
这基本上是倒过来上载的破损。我确实有一种感觉,在上传过程中混合使用了UTF-8和UTF-16文件名,所以我很好奇我如何设置IDE以(1)正确显示远程树中的文件名,(2)用正确的编码正确地上传文件(不是内容的编码,而是文件名本身的编码!)
在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"设置为“Off”,您也可以强制WinSCP使用该功能。虽然你应该强制PhpStorm使用UTF-8。
其实我一直在寻找这样的选项,但找不到一个,除了'Control encoding'并将它设置为'UTF-8'没有解决问题。要么是我没有找到的设置,要么是IDE具有某种类型的内容,但使用SFTP协议,不是吗? –
我不知道PhpStorm足够回答这个问题。 –