Web

IE11 とダウンロードファイル名の問題

IE11 で User Agent が変わったことはご存知だろう。

Version 7
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0)

Version 8
Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0)

Version 9
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

Version 10
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)

Version 11
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko

この通り、 v11 からは「MSIE」の文字列が無くなっている。理由は IEInternals のブログによると:

This string is deliberately designed to cause most UA-string sniffing logic to interpret it either Gecko or WebKit. This design choice was a careful one—the IE team tested many UA string variants to find out which would cause the majority of sites to “just work” for IE11 users.

赤で強調したところだが、「ウェブ標準の準拠において IE11 は Gecko や WebKit と同レベルになった」とマイクロソフトが判断したと受け止められる。

確かに、IE の Acid3 や HTML5 対応のスコアはこのところ順調に改善されてはいる。一方、未だにダウンロードファイル名で UTF が使えないという恥じるべき問題が残っている。

Rails でファイルとしてダウンロードをさせたいデータを送信するときは send_data を使う。

そして、今までは前述の「MSIE」を目印にブラウザーが IE であれば、ファイル名を Shift_JIS (CP932) に変換していた。

先日、クライアントから IE11 でファイルをダウンロードすると、ファイル名が文字化けしてしまい、ダブルクリックしても開けないという連絡を受けた。調査すると、User Agent の変更でブラウザーが IE として認識できなかった影響で「.csv」とファイル名の拡張子が「csv」と、ピリオドが中黒に化けたせいで、開けるファイルとして扱われなかったことが原因と分かった。

今回は #is_msie? メソッドを修正することで問題は解決はできたが、Shift_JIS 系でもう一つ愚痴を言わせてもらうと、Excel が未だに Shift_JIS でしないと CSV を開けない問題は何とかならないものか。

Web

WordPress を入れました

公式ホームページを作らねばと思いながらも、日々の開発で忙殺 されてしまい、開業からもう 1 年半も経ってしまいました。

小規模ながらも会社として情報発信を始めたいので、技術や開発について少しずつ書いていこうと思います。これからどうぞよろしくお願いします。

早速、第一回目の投稿として、このブログで使っている WordPress のインストールについて書きます。

動作環境

  • ハードウェア: Mac mini Server (Mid 2010)
  • OS: Mac OS X Snow Leopard Server (10.6.8)
  • ウェブサーバー: Apache 2.2.x

インストール作業

WordPress のホームページにある Installing WordPress を参考にしました。基本的に手順通りに進みましたが、Apache のサイト管理に Mac OS X Server の Server Admin を使っておらず、また、PHP や MySQL 5 などは MacPorts でインストールしているため、手順に載っていない設定が必要でした:

  •  wp-config.php の DB_HOST
    Apache と MySQL が同じマシンで走っている場合は “localhost” を指定しますが、MacPorts の MySQL 5 は Snow Leopard Server に標準でインストールされている MySQL と違う場所にソケットファイルを作るので、その場所を指定しました:

  • Apache php5_module の組み込み
    WordPress の手順は、Apache で PHP が使える設定になることを前提に書かれているので、手動で有効にしました。OS X Server 標準の Apache の /etc/apache2/httpd.conf で、次の行からコメントを外しました:

  • ブログ用のバーチャルホストの追加
    同じく、手順書は WordPress しか走らない Apache の構成を前提にしているので、ブログ用のバーチャルホストに必要な設定が載っていませんでした。内では次の設定を使いました:

なお、ブログのホスト名は別途 DNS に登録しておく必要があります。内では、プロジェクトごとのテストサイトのサブドメイン登録の手間を省くために、ワールドカードで *.in-control.co.jp を会社のサーバーに解決するようにしています。