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

Chr*_*vic 5 encoding sftp utf-8 phpstorm

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

在此输入图像描述

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

在此输入图像描述

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

Mar*_*ryl 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 编码”设置为“关闭”来强制 WinSCP 使用它。尽管您实际上应该强制 PhpStorm 使用 UTF-8。