質問: なぜ2バイトのファイルが扱えないのでしょうか? 以前にも伺ったことですが、 なぜhttp(https)アクセスで2バイトのファイル名が扱えないのでしょうか? 私が調査したところ、 「windowsとlinux(unixも含む)は文字コードが違うから」ということでした。 なので、テストとして自分のpc(windowsxp pro)にapacheとftpソフトを入れ、 日本語のファイル名をuploadしhttpでアクセスしましたら、 きちんと認識(ブラウザで閲覧可能)できました。 しかし、世の中のwebサーバは(linux)unixだけではなくwindowsで作られているものもあります。 ならば、なぜ2バイトのファイルが使えないのでしょうか?
回答: httpプロトコルの中にファイル名の文字コードをセットするような仕様がないからだと思います。 フォームの内容を送信する場合でさえ、utf-8で送信する場合もあれば、送信画面の文字コード使用する場合もあります。 ただし、クライアントとサーバのosが同じであれば、クライアントもサーバも文字コードを自分にとって有利なように解釈するので、たまたまうまくいくだけだと思います。