ダウンロードしたファイル名が違う

授業が休みなのを利用して、学生の成績や授業の単位取得、さらに教室の予約など、学校に関わる情報を一括管理するシステムの更新がありました。そして、ハードが新しくなったのに合わせて、バージョンアップも実施し、最新のOSおよびブラウザに対応することになりました。

今回の更新で新しく追加された機能を中心に動作確認していたところ、怪しい動作が見つかりました。

このシステムには、Eメールのように通知を登録しておく機能があり、その通知に添付ファイルを付けられます。更新直後、さっそく最初の通知を登録したところ、添付ファイルをダウンロードするとファイル名が変なことに気が付きました。

私は、大学生のころからMS-DOS や UNIX を使ってきたので、ファイル名にスペースが入るのには違和感があります。しかし、今の若い人には、そんなことは無いのでしょう。かなり前に、全角スペースを使ったファイル名を見て、驚いたのですが、今はかなり慣れてきました。しかし、半角スペースを含んだファイル名は、絶対におかしいと思います。今回は、ファイル名に半角スペースが使われていました。

JavaScript で、半角スペースをURLに変換するのは、いろいろ問題があります。avaScript は、ブラウザ毎に実装された機能なので、それを作った会社の考え方によって、機能が変わることがあり、半角スペースをURLに変換する処理はその影響を受けているようで。

どうも標準のJavaScriptでの半角スペースをURLに変換した際の振る舞いは、「+」にするだそうです。しかし、そのまま「%20」で処理するブラウザもあります。手元のパソコンで確認したところ、Chrome は、「%20」でした。しかし、IE11とSafari は、「+」にしていました。そのせいで、ブラウザによってダウンロードしたファイルのファイル名が違ってしまうことに。

添付ファイルをダウンロードするとファイル名が変わってしまうのは、よくありません。しかし、ファイル名に半角スペースを使ってしまうと、ブラウザの都合でファイル名が変わってしまいます。

一応、開発した会社に相談してもらうことになりましたが、相談された方がかわいそうかも。事務スタッフが、ファイル名に半角スペースを使わない、としてくれた方が楽ですが、そうはいかないでしょうね。Microsoft Office でファイルを保存する際に、半角スペースを使ってはいけない、というメッセージは出ないし。そのうち、半角スペースを使っても問題ないようにしてくれるでしょう。