2016-07-27 40 views
5

我的主機已禁用FTP,所以我不得不使用SFTP,但自從轉移到SFTP後,我遇到了PhpStorm的一些奇怪問題。我的文件名有時候會有德文變音符號,例如LösungsblattÜbungsblatt,通常它會正確上傳,並且主窗口會正確顯示文件。因爲我被迫使用遠程主機上的SFTP舊的文件顯示,因爲這錯誤的文件名編碼與PhpStorm/WinSCP和SFTP

enter image description here

而新上傳的文件裏面PhpStorm正確顯示。然而,在WinSCP賦予舊文件被正確地顯示爲Lösungsblatt-01.pdf等,但這似乎文件正確通過PhpStorm因爲它們顯示爲

enter image description here

這基本上是倒過來上載的破損。我確實有一種感覺,在上傳過程中混合使用了UTF-8和UTF-16文件名,所以我很好奇我如何設置IDE以(1)正確顯示遠程樹中的文件名,(2)用正確的編碼正確地上傳文件(不是內容的編碼,而是文件名本身的編碼!)

回答

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"設置爲「Off」,您也可以強制WinSCP使用該功能。雖然你應該強制PhpStorm使用UTF-8。

+0

其實我一直在尋找這樣的選項,但找不到一個,除了'Control encoding'並將它設置爲'UTF-8'沒有解決問題。要麼是我沒有找到的設置,要麼是IDE具有某種類型的內容,但使用SFTP協議,不是嗎? –

+0

我不知道PhpStorm足夠回答這個問題。 –