Re: 日本語のみのファイル名で問題が起こる件について

2013年5月9日 at 19:49

いつも大変お世話になります。

「日本語ファイル名」に対応、大賛成です。

過去に何度かトラブルを経験しました。

【ケース1】大阪府堺市 50代 女性
大量の日本語名Jpegファイルをアップロード。
それを使ってページを作成していた。
僕が気づいた時には後の祭り。
ファイルマネージャーを覗くと、ファイル名の消えた「.jpg」のオンパレード。
どれがどのファイルかまったく区別がつかず、
数がかなり多かったので大変難儀しました。

【ケース2】兵庫県西宮市 60代 男性
普段から「ファイル名はアルファベットと数字しか使えません。
日本語のファイル名は、変更してからアップロードして下さい!」
と口を酸っぱくして言っていた。

或る時「不具合があるから見てくれ」と言われ調査すると、
「日本語のみファイル名」が原因であった。
「だから、日本語でファイル名は駄目なんですってば!」と
言うと、キョトンという顔をされた。
どうも言っていることが理解できないらしい・・・。

以上の経験から、
「一般の人に、日本語ファイル名を禁止するのは無理!」
と思いました。

で、こちらの情報を元に改造をおこないました。

「ファイル名のマルチバイト文字対応
http://concrete5-japan.org/community/forums/translate/post-1540/

確か完璧ではなかった(ファイルダウンロード時に文字化け?)と
記憶していますが、状況は大幅に改善されました。

また、こちらの情報も参考にさせていただきました。

漢字ファイル名のファイルをアップロードしたときファイル名を正しく表示させる方法
http://concrete5.tomo.ac/osusumeblock/extendedform/tomoac-form5/kanjifilename/

という訳で、「日本語ファイル名」対応は大賛成です。

よろしくお願いします。

Re: 日本語のみのファイル名で問題が起こる件について

2013年5月9日 at 20:12
ありがとうございます。過去スレッド、あったんですね。
当時のぼくはコードまでコミットしていませんでした…。

Punycodeは避けたほうが良いかと思います、Taoさんの指摘する通りです。

また、サーバー上にハッシュ化して保存し、
元のファイル名を別途保存するという処理にするには修正範囲が大きくなります。
この方向で行くのであれば、ファイルアップロードの処理を書きなおして本家にプルリクエストすることになります。
やろうかなとも思いますが…

ぼくが作ったものはまずファイル名のエンコーディングをオートでUTF-8に変換します。
これはconcrete5をインストールする環境はUTF-8だという前提を暗黙のものとしています。
この時点で若干あやしい。
それからダウンロードの処理の際、本家の実装ではマルチバイトに対応していないので
RFC 2231 の規約に沿った実装に修正しています。
ただ、この標準規約をIEのバージョンによっては無視するらしいです。
きちんと検証できていないのですが。

いずれにしても、本家はURLのマルチバイト対応について全く対応する予定はなさそうです。
URLは日本語を使わなくても、ファイル名は日本語にする人のほうが多いでしょう。
個人的にはURLのマルチバイト対応よりも優先度を上げて本家にプッシュしていくべきかと思いますが、
なにせ本家の人たちは検証ができないと思うので、こちらからできあがった解決策を送りつけるしか無いのではないかと思います…。