2018/12/08(土)Windowsエクスプローラで文字化けしないFTPサーバ

2018/12/08 23:55 PC(Linux)
■前提
クライアント: Windows10
サーバ: Linux

当初vsftpdでFTPサーバを運用していたが、Windowsからアップロードした際に日本語ファイル名が文字化けしたと連絡が来た。自分でも確認してみたが、確かにWindowsのエクスプローラからアップロードすると文字化けする。

文字化けの挙動が不可解。全文字化けではなさそう。
でもダメ文字ではなく、特定の文字位置が化けているような…

今回時間がなかったので細かい調査は実施せず、とりあえず解消方法だけ模索した。

原因として一番怪しいのは、Windowsの下記仕様変更だ。

Winows10でのFTPコマンド実行時の振る舞いについて

FTP接続の頭で、
OPTS UTF8 ON
する。その事自体は問題ない。
のだが、この後の「Windows側でファイル名をUTF-8にエンコード」のときにバグって化けてるとしか思えない。
つまり、OPTSが通ってしまうとUTF-8転送になってバグルートに落ちるので、OPTSを拒否させた上でSJISで転送してもらわないといけない。

vsftpdだとOPTSを無視することはできるが、クライアントとサーバで文字コードを変換させる設定が見つからなかった。

変換無しで考えた場合……
サーバ側UTF-8ファイル名だとWindowsからだと文字化けしていそう。
サーバ側SJISファイル名だと多分UTF-8解釈させると思うので、ちゃんとしたFTPクライアントから文字化けしていそう。

仕方ないので、vsftpdからproftpdに切り替えた。
proftpdにはエンコーディングをサーバ・クライアントで変換する設定がある。
proftpd.confに下記設定で、とりあえずWindowsエクスプローラからのFTPで文字化けがなくなった。
UseEncoding UTF-8 CP932 strict
LangDefault en_US
LangDefault en_US入れないとメッセージが文字化け。
クライアントがFFFTP、WinSCPあたりでも問題なさそう。とりあえずこれで。

[参考]
IEからProFTPdにアクセスするとファイル名が文字化けする - ブログ - ワルブリックス株式会社

あと恒例の文字化けファイルをLinux上でいじる方法。
Linuxでファイルが文字化けした際の対処法 | OXY NOTES

バッドノウハウ的なので追求しない。
OK キャンセル 確認 その他