プロが教える店舗&オフィスのセキュリティ対策術

FTP SJIS 能など(2バイト目5C)文字 転送エラー

お世話なります。

FTP転送において、ファイル名に能、表など(2バイト目が5C)を含むファイルをFFFTP、ALFTP等で転送しようとすると、応答コード550の転送エラーとなります。

Shift-JISで能・表などの2バイト文字を扱う場合、2バイト目が5Cだと、5Cが「\」と認識され
エスケープ文字になってしまう問題は有名のようですが、
どうすれば等不具合は解消できますでしょうか。

環境はRedhatでシステム文字コードは「/etc/sysconfig/i18n」を確認したところUTF-8です。
別のSoralis環境では文字コード「/etc/default/init」を確認したところで、
SJISですが、問題なく当該文字を転送できます。

ということはFTPサーバプロセスがSJIS文字を、認識するのにUTF-8に変換する過程で読み取れずにエラーということでしょうか?

ご教示いただけたら幸いです。

よろしくお願いいたします。

A 回答 (3件)

何をしようとしているか(なんのためにそんなことをしようとしているか)


がわからないのですが、

 そもそも日本語を含むファイル名のファイルをFTPでサーバにアップロードしようとしていること自体が痛いと言わざるを得ません。

 どうしてもやりたいならFFFTPというソフトにそれに対応した機能があります。ホストの設定を登録するときに、

「ホストの設定」→「文字コード」タブ→「ファイル名の漢字コード」

 という項目のところにサーバ側でのファイル名の漢字コードを指定する箇所があり、ここで指定したファイル名に変換してアップロードしてくれます。

 しかし先ほども述べましたように、日本語ファイル名をLinuxホストにアップロードするという行為は多少ITをかじった人から見ると少し「痛い」行為に見えることは自覚しておいてください。

 なお、完全にどっぷりつかったIT技術者であれば「まあ別にそれもいいんじゃないか?」と言って許容してくれるどころか、相談する相手によってはたちどころに解決してくれたりするかもしれませんが、それはその人の厚意であって、当たり前のことではありませんのでご注意ください。

 日本語ファイル名をサーバにアップロードして、何に使用されるおつもりですか?

この回答への補足

回答ありがとうございます。

業務でドキュメントをサーバ管理しており、その際にFTPを使用しているのですが、
サーバ移行に伴い、前はSolaris環境で行っていたものをRedhad環境で行うようになったため、
発覚した不具合です。

FFFTPでホスト設定を行ったところ、ファイル自体はアップロードできました。
しかし、Redhatのシステムの文字コードはUTF-8なのですが、ファイル自体はShift-JISで管理のため、
FFFTP、Teratermなどの表示で文字化けしてしまいます。

2バイト目が5Cになっている文字以外は問題なくやりとりができるのですが、表や能など2バイト目が5Cのものはやりとりできません。

当問題は運用でカバーも視野にいれて考えたいと思います。

補足日時:2010/07/14 19:06
    • good
    • 0
この回答へのお礼

FFFTPの上記設定で転送することはできましたので、
管理しているファイルは基本Shift-JISなのでFFFTPやteratermの表示設定、環境変数LANGはShift-JISなのですが、日本語ファイル名に関してはファイル名をUTF-8に変換して転送し、管理することにしました。

ありがとうございました。

お礼日時:2010/07/14 19:58

FTPというプロトコルには相手側の文字コードを


問い合わせるコマンドはありません。また、
文字コードを指定するコマンドもありません。
例えば、ファイルを送る場合は「STOR ファイル名」
ですが、「ファイル名」のところをどう解釈するか
ということです。サーバ側は多数の相手をするので、
クライアント側が合わせてあげないと無理でしょう。
「put ファイル名」などコマンドを記録したテキスト
ファイルを作り、UTF-8に変換してFTPに食わせる等の
方法をとるべきかと思います。

この回答への補足

回答ありがとうございます。

仕組みがわかりました。

UTF-8にしてWindowsのftpコマンドで食わしてもファイル名自体はShift-JISですので、
ファイルが無いエラーとなりました。

説明不足で申し訳ありません。

Linuxの文字コードはUTF-8ですが、ファイル自体はShift-JISのまま扱いたいのです。

UTF-8のLinuxがShift-JISのファイル名を認識するには、FTP転送処理の内部で、表\.txtのようなエスケープをした状態で転送すれば認識してくれそうな気がしますが、難しいでしょうか。

最新のFFFTP、ALTFTPでも不可でした。以下ページでALTFTPでは転送できるようなことがありますが、だめでした。
http://labs.laurahouse.net/syncmemo/introductionjp

補足日時:2010/07/14 18:58
    • good
    • 0

バイナリーモードで転送してみては?

この回答への補足

回答ありがとうございます。

バイナリモードで転送しても結果同じでした。

説明不足ですみません。

補足日時:2010/07/14 18:47
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!