入門Ajax 増補改訂版 高橋登史朗 ソフトバンククリエイティブ 2006-10-28 売り上げランキング : 101027 Amazonで詳しく見る by G-Tools |
入門Ajax 増補改訂版を読了。JavaScriptにまつわる、クロスブラウザ対策という名のバッドノウハウを愛する男の半生を描いた物語・・・・でなくてえーとAjaxの本だったっけ。
自作ライブラリを用いたサンプルが多かったのには少し閉口しましたが、クロスブラウザ対策に関する記述が充実している点については良い本でした。ただ同じ事柄の説明を繰り返す事が多いので内容は薄め。昔からJavaScriptと言えばとにかくブラウザ依存が問題でしたが、それが今も全く変わらず広範囲にわたって存在することがわかってちょっとげんなりしました。
取りあえずXMLHttpRequestのresponseTextの話は収穫でした。まとめるとこんな感じ。
- responseText/responseXMLは基本的にUTF-8で記述すべきものである。
- responseTextに日本語が含まれるとSafari等で文字化けするため、Apache側でutf-8を明示するか(しかし完全ではないらしい)、escape→decodeURIComponentでエンコード&デコードすることでUTF-8として処理できる。SafariはISO-8859-1と見なしているらしい。
- responseTextでトラブルが起きることが多いので、データをXMLにしてresponseXMLで取得する方が確実。
参考
http://jsgt.org/ajax/ref/charset_test/responsetext/test_1_make_table.php
http://kawa.at.webry.info/200511/article_9.html
http://la.ma.la/blog/diary_200609220110.htm
http://shimax.cocolog-nifty.com/search/2006/11/safariajax_4802.html
それにしても本当にバッドノウハウだらけです。ブラウザの実装を吸収してくれるはずのライブラリは過渡期で乱立しまくりだし日本語対応となると枯れているようでもない。対策を立てるとすぐにブラウザがバージョンアップする地獄は解決しそうにないですが、しかしブラウザ依存の情報を集めながらバッドノウハウを貯めていく楽しさは今も健在だとも感じたのでした。