SublimeText 3のPlugin「SFTP」のencoding errorを解決した


Sublime「SFTP」でトラブった

エンコードエラーの問題発生

Sublime text 3のPlugin「SFTP」を便利に使っていた。広告ダイアログも嫌なので、数十ドル支払っていた。

しかし半年ぶりに使用したところ、サーバー(さくらインターネット)に接続できなくなっていた。。私はなんも設定を変えてないのに。

エラーメッセージは、以下のとおり。エンコード設定を修正しろというもの。

コンソールのエラーメッセージ
Connecting to SFTP server "username.sakura.ne.jp" as "username" ......... success
Validating remote folder "/home/username/www/" .... failure (Encoding error)

メッセージボックスのエラーメッセージ
An encoding error was encountered trying to read from the server. Please adjust the "remote_encoding" setting in sftp-config.json.
Common encodings include:(以下略)

解決方法を調査

ネットを調べると日本語、英語、韓国語のトラブル例が見つかった。sftp-config.jsonの"remote_encoding"の部分を”cp1253"や"cp932"に変えるとうまくいくとか(デフォルトはUTF-8)。Plugin作者がファイル名やパスに特殊文字がないかと指摘しているのも見かけた。

https://teratail.com/questions/16615
https://forum.sublimetext.com/t/encoding-problem-with-sftp-and-syncing-folder/13301
https://superuser.com/questions/1061109/why-does-sublime-sftp-report-encoding-error
http://naminsik.com/blog/2916

しかし実際どれを試してももうまくいかない。。ConvertToUTF8のPluginをダメ元で入れたけど、やっぱりだめ。サーバーの問題も勘ぐったが、WinSCPでSFTP接続できているので、やはりPluginが原因と思われた。

作者に問い合わせるのも面倒だなぁと諦めかけていた。

これが正解

こういうときに経験的にうまくいく方法として、思いついたものを全部試すというのがある。

エラーメッセージはエンコード云々だけど、そのタイミングに注目してみた。ログイン成功後のディレクトリのチェックの段階でエンコードエラーが出ている。ディレクトリでこのメッセージ意味不明。

そこでリモートパスがおかしいかも、と思い少し削ってみた。

sftp-config.json
古: "remote_path": "/home/username/www/",
新: "remote_path": "/home/username/",

すると、ビンゴ。encoding errorが出なくなった

まぁこのままだとwwwがない別のフォルダを作ってアップロードしてしまうので、ちょっと調整。ローカルに「wwww」という名前のフォルダを作り、ここにファイルを全部移した。sftp-config.jsonを「www」のひとつ上の階層に移した。

これで以前と同様に便利に操作できるようになった。

以上