【PR】 マジックリスニングなど英語教材比較 【PR】 ディズニーの英語システム 【PR】 TOEIC750点保証講座 【PR】 足裏健康法・樹液シート |
||||||
ネットスケープ4.XでファイルのアップロードができないSo-netの月額料金が最大2ヶ月無料
実はそうでもない場合があるのです。このファイルアップロードに関する挙動などはその典型例の一つだとは思いますが、 ネットスケープ4.X(正確にはネットスケープ4.75を除くネットスケープ4.X)では、日本語のファイル名・パスを使っている場合に、ファイルのアップロードができない場合があります。どういう場合にできないかと言えば、ファイルアップロードのためのファイル選択画面の文字コードが左上のサンプルHTMLのようにEUC-JPで書かれている場合 です。
また、前述のように手元のMac版ネットスケープ4.7では、日本語のファイル名は自動的にURLエンコード(Shift_JISコードでのURLエンコード。Mac版ネットスケープ6.1でも、同様にShift_JISでのURLエンコードだった。またWindows版4.X及び6.0でもURLエンコードこそされていないが、Shift_JISでサーバ側に到達していた。IE(Windows版及びMac版とも)及びWindows版ネットスケープ7.02では、EUC-JPであった。)され、問題なくアップロードできました。もしかすると、他のバージョンのMac版ネットスケープ4.Xでは日本語ファイル名をそのままアップロードしようとするかもしれませんが、その場合はJavascriptの2バイト文字チェック関数で引っかかるはずですから、多分これで動くと思います。 ネットスケープ4.7及び6.1では、元ファイル名はShift_JISでURLエンコード(もしくはそのままPOST)されていますから、仮にアップロードされたファイルの元ファイル名などをデータベースに格納しておくのならば、URLデコード後必ずShift_JISからEUC-JPに変換しておく必要があります。ただし、どのブラウザはどの文字コードでファイル名を送信してくるかを場合わけするのは面倒なので、受信したファイル名の文字コードを調べ(PHPならmb_detect_encoding)、対処するのが良いと思います。 最後に、当然のことながら、Javascriptをoffにしているユーザーも3.6%から3.9%ほどいますから(私のサイトの統計。約10万ぐらいのサンプル数で集計)、その場合、チェック関数を通過しませんので、日本語のファイル名でもそのままアップロードされます。場合によっては、ファイルを選択せずに送信してしまうユーザーもいるでしょう。こういうことも考慮してサーバサイドでも必ずチェックすべきです。もちろん、セキュリティ的な観点でもそうです。Javascriptでのチェックは、あくまでも送信ボタンを押して1分近く待たされた挙句、サーバサイドでのチェックで「エラーが発生しました」では、ユーザーがかわいそうだからです。決してサーバサイドでのチェックを省くためではありません。 以上、文字コードによってファイルアップロードができない現象が発生する事例について紹介しました。次のページでは、Googleの検索結果に現れるページタイトルやサマリーが文字化けする事例について取り扱います。
|