iPhone APP Downloadsで長押し文字化け挙動
結論は、長押しはヤメトケ!
ちょっとハマって解決したiPhone APP Downloads および Mercury その他の亜流MobileSafariの長押し問題について、解決したのでメモしておきますね。
なんでもリンク箇所を長押しすれば、iPhone本体にファイルやページを記録保存してくれるDownloadsやMercuryなどのダンロード系アプリの話しですが、実は動画のダウンロードなどで「日本語タイトル」が化ける問題について、ひとつの発見をブログにしたいと思います。(本邦初?あんまり検索オタクじゃないので、既知かどうか筆者は知りませんが‥‥‥)
その発見は、長押ししたときと、リンクを軽くタッチしたときでは、得られるエンコードが違うということです。これを判明するまでに4日もかかってしまった‥‥‥‥
ダウンロードではPHPなりPERLなり、よく使うPEARのDownload.phpがありますが、setContentDispositionを経由して、MSIEのためにfilenameでSHIFT-JISやrawurlencodeで解決させたり、Safariのために $_SERVER['PATH_INFO']でファイル名保存を解決させようとすることは多いと思います。しかしモバイルSafariではエンコードの挙動が違うのでメッチャクチャ注意ですね。
長押しすれば、PHPなりPERLなりで作られた「完全な状態」でサーバーから正しいエンコードを得られます。いわゆるUTF-8での正規化で名前が崩れずに得られるわけです。しかし、長押しで保存しようとすると、MobileSafari(と互換品)では、開発キットでSafariのルーチンをそのまま流用しますものですから、長押しによってサーバが定めた適切なエンコードを見事に無視してくださり、ISO- 8859-1として取得しています。そのために文字化けが発生しています。もっともSafariの場合は、ページのMETAのCharsetと内部エンコとヘッダーエンコの3つが最低合致しないと判定が厳しく「漏れたらISO- 8859-1の刑罰」が突きつけられるわけですが‥‥‥
なんと、ダウンローダー系アプリも長押しで、この「文字化けの刑」に処せられてしまうわけです。(恐らく長押しによる処理継続とは、サーバーとブラウザ間の完全な同期リンクではなく、長押しによって、アプリが固有に定めた保管処理が進行するため、エンコードが合致しないと判断される結果、Safariの判定ロジックから漏れてISO- 8859-1になり、UTF-8の正規化に失敗する、といった感じなのでしょうね。いくらサーバー側でがんばっても、この挙動を知らないと、いつまでも「あれ?モバイルサファリは文字化けか?」と勘違いしたままハマります‥‥‥‥‥ このブログサーバーで実はじっくりやってたのは内緒です。アタシが使ってるのはコミュネスさんの無料ブログなんだけど、FTP接続からhtaccessそしてPHP環境まですべてユーザー側で使えるので、ごにょごにょやってたわけでした‥‥‥‥iPhone対応でいろいろと趣味のブログ作りですが‥‥‥やっと挙動がわかったのでモヤモヤ感がスカっと晴れました! 恐るべし、長押し!)
と、まあ、長くなりましたが、ダウンローダー系のアプリ(Downloads)などは、ここがダウンロードできるリンクだとわかれば、自動的にダウンロード保存を促すダイアログを聞いてきますから、長押ししなくても保存ボタンが表示されるので、それに従うように使えばぜんぜん文字化けせずに、日本語タイトルの動画をそのままiPhone内に保存することが可能です。
そんな流れをスクリーンショットにしましたので、どうぞご参考に。
絵の中の大きなiPhone動画のサムネの三角ボタンではなく、画面の下の方にある「動画ダウンロード(iPhone/iPad/PSP)」というリンクを押して得られる日本語タイトル名付きの動画ファイル保存の一連の動作の解説です。
いつも通りに軽いタッチで開けば‥‥‥(文字化け解消)
しかし、0.5秒の長押しで保存を選ぶと‥‥‥(バケらったー)
う………明らかに、UTF-8エンコードのSafariの文字コードの合致漏れによる強制ISO- 8859-1化による文字化けですね。もっと緩くてもいいように思うんですが、皆さんはどう思いますか? Safariのブラウザシェア率がパソコンで6%、ケータイモバイルで18%になったらしいですが‥‥‥、クロームが2%弱ってウィキペディア調査統計にのってたようですが、ネットフロント並に20%もシェアがあるなら充分メジャーなブラウザだと思いますが‥‥‥…
もうすこし、アップル製品には柔軟性が欲しいですよね。iPhoneやマック製品に不足なものはそこだけかな。でも本当のデザインって竹や柳のような柔軟性なんだけどね。UTF-8-MAC問題やら、サーバー送出header命令無視のブラウザやら‥‥‥めんどくさいよぉ。
Trackback URL: トラックバック用URLを生成するには、JavaScriptを有効にしてください。
No trackbacksアキラ - 2011-01-18 17:38
コメント(1)