2006年9月8日金曜日

Blazerで快適ブラウジングを目指す!(目指せ!文字化けゼロ!)

最近のパームにはBlazerというブラウザが標準でついています。OS標準なので、他のアプリからの連携であったり、ネイティブアプリなので、OperaMiniとかと違ってさくさく動きます。

ただ、最大の問題点として、日本語ページが化ける場合があります・・・細かく言うと、シフトJISやEUCは表示できるのですが、UTF-8なページはブラウザがサポートしていない?ので100%化けます。また、シフトJISやEUCであっても、Charsetが明示されていないページの場合、自動判別が出来ず (100%かどうかはしらない。)文字化けします。

最近ではUTF-8なページもかなり増えてきましたので、この制約が全然無視できないんですね・・・

GoogleやYahoo検索やスラッシュドット、はてなRSS等が使えないのはかなり痛いです。また、表示できているページでも一部だけ文字化けしたりして気色悪いのもあります。

そんな事情で、多くの方はOperaMiniを使ったり、併用したりしてるんですね。

そこで、いろいろ調べて見ると、

きょうのOSバカ 使ってますよ、電子小物! - 「Blazer」専用 文字コード変換・画像圧縮Proxy
http://d.hatena.ne.jp/osbaka/19000101

このようなことをされている方を見つけました。他にも「Blazer delegate」などで引っ掛けてみると、いろいろ出てきますね。構築方法自体だと、「圧縮 プロキシ delegate」とかで引っ掛ける方が、たくさん出てきます。この場合、ほとんどがエアエッジ用の圧縮サーバですが、上記リンクはこれらに、文字コード変換を噛ましたものなので、かなり参考になります。

で、早速やってみた!

まぁ、構築自体はすぐ出来たけど、これでも、結構文字化けします。Gmailとか使えないし、Yahooとかも文字化けするし・・・うーん。

・・・要は、テキスト自体はnkf -sでShift-JIS化&半角カナ→全角カナ(特にCJKOSの場合後者がかなりナイス!)には、変換されているわけだ・・・

あとは、ブラウザが誤判断をしない仕組み作りなわけで・・・

一応、delegateのcfiでCharsetを変換しているけど、これが完全じゃないみたい。というか、サイト側で文法間違っていたりするので、完全には置き換わらない。また、Gmailとかだと、"Content-Type"が"text/html"じゃなく"application/xhtml+ xml"なんてのになってる。
スラッシュドットは見れるけど、Googleはやっぱり文字化け・・・

って事で、ちょっと修正。


--
Content-Type: text/
Output/Content-Type: text/html; charset=Shift_JIS
Filter: Filter: /hoge/hoge/put_shiftjis | /usr/bin/nkf -s
--
Content-Type: application/xhtml+xml
Output/Content-Type: application/xhtml+xml; charset=Shift_JIS
Filter: /hoge/hoge/put_shiftjis | /usr/bin/nkf -s


うーん、いろいろ試すもどうもうまくいかないな~。・・・put_shiftjisの中身をみると、xmlタグの文字の置換をしてるだけみたいなので、こうなったら、タグに囲まれた、euc-jpやutf-8を全てShift-JISに変えちまえ!


--
Content-Type: text/
Output/Content-Type: text/html; charset=Shift_JIS
Filter: Filter: /usr/bin/nkf -s | sed -f /hoge/hoge/blazer.sed
--
Content-Type: application/xhtml+xml
Output/Content-Type: application/xhtml+xml; charset=Shift_JIS
Filter: /usr/bin/nkf -s | sed -f /hoge/hoge/blazer.sed


blazer.sed

s/\(<.*=.*\)[Uu][Tt][Ff]-8\(.*>\)/\1Shift_JIS\2/g
s/\(<.*=.*\)[Uu][Tt][Ff]8\(.*>\)/\1Shift_JIS\2/g
s/\(<.*=.*\)[Ee][Uu][Cc]-[Jj][Pp]\(.*>\)/\1Shift_JIS\2/g
s/\(<.*=.*\)[Ee][Uu][Cc][Jj][Pp]\(.*>\)/\1Shift_JIS\2/g



うーん。これで、GoogleやGmailが文字化け無しで見れるようになったぞ!しかし相変わらず、サイトの一部文字化けや、Yahooの検索が文字化け・・・

よく調べてみると一部文字化けのページなどで、



を送ってないサイトがある。たしかこれって、いくつあっても最初のが採用されるだけで、弊害は無かったはず・・・えいっ!


blazer.sed

s/\(<.*=.*\)[Uu][Tt][Ff]-8\(.*>\)/\1Shift_JIS\2/g
s/\(<.*=.*\)[Uu][Tt][Ff]8\(.*>\)/\1Shift_JIS\2/g
s/\(<.*=.*\)[Ee][Uu][Cc]-[Jj][Pp]\(.*>\)/\1Shift_JIS\2/g
s/\(<.*=.*\)[Ee][Uu][Cc][Jj][Pp]\(.*>\)/\1Shift_JIS\2/g
s/\(<[Hh][Ee][Aa][Dd]>\)/\1&lt;meta http-equiv="Content-Type" content="text\/html; charset=Shift_JIS"&gt;/g
1s/^\(\)/&lt;!-- あMOJIBAKE TAISAKU--&gt;\1/g
/^$/d


強引にタグの次に付け足す!そして、ついで、おまじないのつもりで、ファイルの先頭にShift-JISで「あ」を埋め込む!Blazerがこれで判断するとも思えないが・・・あとついでに、要らない改行のみの行とか削って気分的にダイエット。ここら辺は好みの問題!まぁ、ここにいろいろ書き込めば、文字化けのスポット対応とかもいろいろ出来そう。これで、ほとんどのサイトが見れるようになったぞ!

しかし!Yahoo検索ができない!

これにはまった・・・検索結果自体は正常に表示されるものの、検索文字列自体の文字コードが関係しているらしい・・・

Yahoo! JAPAN - 自分のサイトに、Yahoo! JAPANの検索窓をつけてみよう
http://help.yahoo.co.jp/guide/jp/ysearch/searchbox/instructions.html

むー。仕様を変更したのか・・・
・・・えい!


blazer.sed

s/\(<.*=.*\)[Uu][Tt][Ff]-8\(.*>\)/\1Shift_JIS\2/g
s/\(<.*=.*\)[Ee][Uu][Cc]-[Jj][Pp]\(.*>\)/\1Shift_JIS\2/g
s/\(<[Hh][Ee][Aa][Dd]>\)/\1&lt;meta http-equiv="Content-Type" content="text\/html; charset=Shift_JIS"&gt;/g
1s/^\(\)/&lt;!-- あMOJIBAKE TAISAKU--&gt;\1/g
/^$/d
s/\(&lt;form.*action=.*search\.yahoo\.co\.jp.*&gt;\)/\1&lt;input type="hidden" name="ei" value="SJIS"&gt;/g


nkf -s で変換かけた後のページだから全部S-JISなので、ヤフーの検索窓っぽいformに上記URLで書かれているタグを付け加えてやる!一応ヤフーのトップページや、ヤフー検索のページにもマッチする。で・・・

キタ━━━━━━(゜∀゜)━━━━━━!!!!


これで、少し巡回した限りでは、文字化け無し、Google,はてな,Yahooなどなど・・・

不具合としては、

・GoogleやYahooのトップページに日本語が入力できない

なぜ!いや、文字入力は出来るが、すぐに確定されてしまい、日本語変換できない・・・テキストサイズをオーバーするまでグラフィティを「。。。。。。。」って感じでタップして、blazerのテキスト入力ボックスを出せば出来る。また、ソフトキーボード出してももちろん可能。でも普通に入力できるボックスもあるから、法則がわかれば、blazer.sedで置換できるかな?ちなみに当方ATOKです。POBoxならOKなのかな?

どうしてもめんどくさいときはYahooやGoogleの検索窓をのみのページでも自分で別に作ればOK。公開されているコードの場合は入力できる・・・


・SSLなUTF-8なページが文字化けする。(はてなのログインぺーじとか・・・)

これは、仕方ない話ですが・・・とりあえず、Blazerのプロキシ設定はhttpでもhttpsでも共通で使ってしまうのでSSLなUTF-8なページはプロキシはずすか、化けた文字をがんばって解読しかないかなー。


でも、普通に使う分にはまったく問題ないレベルです。超快適です!

ってか、世界に売り出してんだから、文字コードの実装ぐらいキチンとしたの乗っけて売って欲しい・・・>palm



0 件のコメント:

コメントを投稿