• ベストアンサー

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

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に変換する過程で読み取れずにエラーということでしょうか? ご教示いただけたら幸いです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • stanaka
  • ベストアンサー率44% (13/29)
回答No.3

何をしようとしているか(なんのためにそんなことをしようとしているか) がわからないのですが、  そもそも日本語を含むファイル名のファイルをFTPでサーバにアップロードしようとしていること自体が痛いと言わざるを得ません。  どうしてもやりたいならFFFTPというソフトにそれに対応した機能があります。ホストの設定を登録するときに、 「ホストの設定」→「文字コード」タブ→「ファイル名の漢字コード」  という項目のところにサーバ側でのファイル名の漢字コードを指定する箇所があり、ここで指定したファイル名に変換してアップロードしてくれます。  しかし先ほども述べましたように、日本語ファイル名をLinuxホストにアップロードするという行為は多少ITをかじった人から見ると少し「痛い」行為に見えることは自覚しておいてください。  なお、完全にどっぷりつかったIT技術者であれば「まあ別にそれもいいんじゃないか?」と言って許容してくれるどころか、相談する相手によってはたちどころに解決してくれたりするかもしれませんが、それはその人の厚意であって、当たり前のことではありませんのでご注意ください。  日本語ファイル名をサーバにアップロードして、何に使用されるおつもりですか?

fushululu
質問者

お礼

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

fushululu
質問者

補足

回答ありがとうございます。 業務でドキュメントをサーバ管理しており、その際にFTPを使用しているのですが、 サーバ移行に伴い、前はSolaris環境で行っていたものをRedhad環境で行うようになったため、 発覚した不具合です。 FFFTPでホスト設定を行ったところ、ファイル自体はアップロードできました。 しかし、Redhatのシステムの文字コードはUTF-8なのですが、ファイル自体はShift-JISで管理のため、 FFFTP、Teratermなどの表示で文字化けしてしまいます。 2バイト目が5Cになっている文字以外は問題なくやりとりができるのですが、表や能など2バイト目が5Cのものはやりとりできません。 当問題は運用でカバーも視野にいれて考えたいと思います。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.2

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

fushululu
質問者

補足

回答ありがとうございます。 仕組みがわかりました。 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

すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

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

fushululu
質問者

補足

回答ありがとうございます。 バイナリモードで転送しても結果同じでした。 説明不足ですみません。

すると、全ての回答が全文表示されます。

関連するQ&A