Ajaxで今よみがえる(^^;;-->[クロスブラウザ技術 ]DHTMLサンプル集
古籏一浩さんとのはじめての共著 発売中-->『Ajax実践テクニック』 古籏一浩/高橋 登史朗 (著)秀和システム
配本予約開始-->『入門Ajax 増補改訂版 』 高橋 登史朗 (著)ソフトバンククリエイティブ ; ISBN: 4797336242
-- リスト --
【カテゴリー】 ActionScript ( 5 ) AIR ( 2 ) AjaSQL ( 10 ) Ajax ( 561 ) Arax ( 1 ) canvas ( 10 ) CSS ( 10 ) ( 5 ) DLNA ( 1 ) Dojo ( 17 ) DOM ( 45 ) ES4 ( 4 ) 反重力物質 ( 1 ) ffAdd-on ( 1 ) Flash ( 46 ) Flash Remoting ( 11 ) FTP ( 2 ) GAF ( 9 ) Google Maps ( 112 ) GPS ( 41 ) HTTPヘッダサンプル ( 9 ) Internet ( 1 ) IPv6 ( 1 ) 漫画 ( 1 ) Java ( 44 ) JavaScript ( 248 ) jKamo ( 8 ) jQchart ( 1 ) jQuery ( 106 ) jquery-ref ( 1 ) jsGadget ( 19 ) jslb_ ( 3 ) jslb_ajax ( 9 ) JSON ( 46 ) JSR223 ( 7 ) kjscmd ( 1 ) KNOPPIX ( 1 ) Linux ( 15 ) Mac ( 8 ) Memo ( 3 ) Microformats ( 2 ) Mini AJAX ( 2 ) MochiKit ( 2 ) mootools ( 3 ) Movable Type ( 57 ) MySQL ( 10 ) NewGameWeb ( 2 ) Nucleus ( 8 ) OpenAJAX ( 3 ) OpenDocument ( 1 ) OS ( 7 ) P2P ( 2 ) Perl ( 7 ) PHP ( 37 ) PostGIS ( 1 ) PostgreSQL ( 4 ) prototype.js ( 21 ) ROBOT ( 1 ) RSSリーダー ( 14 ) Ruby on Rails ( 7 ) Spry ( 6 ) SQLite ( 11 ) SQLiteWorker ( 2 ) ssh ( 1 ) SSI ( 2 ) SVG ( 15 ) TRON ( 1 ) Video ( 1 ) VML ( 1 ) Webサービス ( 96 ) widget ( 6 ) Wii ( 1 ) Wiki ( 1 ) Win ( 6 ) WSH ( 1 ) X01HT ( 29 ) XML ( 30 ) XOOPS ( 1 ) XQuery ( 2 ) XUL ( 4 ) Yahoo! UI ( 62 ) 日付入力用カレンダー ( 1 ) 『Ajax実践テクニック』 ( 1 ) 『入門 Ajax』 ( 42 ) WinTips ( 2 ) こりゃすごい ( 3 ) チューニング ( 21 ) ダイナミックロード関数 ( 7 ) リファレンス ( 13 ) ライブラリ ( 107 ) レーダー雨量表示 ( 1 ) ハード ( 20 ) ペンギン ( 2 ) ブラウザ ( 71 ) ブログでBBS ( 1 ) アクセスグラフ ( 3 ) イベント ( 1 ) カレンダーによる日付入力スクリプト ( 4 ) クロスブラウザ ( 11 ) クロスブラウザ関数 ( 7 ) スマートフォン ( 8 ) セキュリティ ( 106 ) ソフトイーサ ( 1 ) マッシュアップ ( 23 ) 暗号 ( 4 ) 映画 ( 47 ) 河川の水位グラフ ( 3 ) 回線 ( 2 ) 開発ツール ( 22 ) 牛久大仏 ( 8 ) 携帯 ( 118 ) 言語 ( 18 ) 故障 ( 2 ) 洪水警報システム ( 2 ) 今日のひと言 ( 5 ) 仕様 ( 55 ) 雑談 ( 219 ) 実装 ( 1 ) 書籍 ( 17 ) 親子ウインドウ有無の確認関数 ( 3 ) 新海誠 ( 3 )
【info】有料サポート(ベータ)限定 承り中 多忙につき、一時、新規受付停止 閉店中 /【JSサポート(仮称)】 

【費用】 とりあえず、言い値で承ります。ただし、できる範囲での限定受付です。込み具合等によりお受けできない場合がありますのであらかじめご了承ください。サポートにご納得いただけなければ料金は不要です。 逆に感動したら多くても構いません(^^;;;。

【できること】 たとえば、かも日記で無料配布されているコードのカスタマイズや、あるいは、JavaScript/Ajax全般+Webサーバーとの連携などのアドバイス&サンプル作成等 。A:jQchartなどでWeb用グラフ設置(エクセル→CSVやデータベースからWebグラフ生成)などのアドバイスやカスタマイズサンプル作成。B:ツリーメニューなどのカスタマイズサンプル。C:Google Mapsのカスタマイズ。etc...

【できないこと】 腕立て伏せ200回

【ライセンス】 私が今まで「かも日記」等で提供してきたコードの大半は、商用利用、改造、自由、連絡不要で、今後もそれらは変わりません。そして、この有料サポートによりカスタマイズコードなどが提供される場合でも、同様に、それらを商用利用しても改造しても自由です。ただし、制限のきついライブラリなどを使う場合は、各ライブラリのライセンスに準拠せざるを得ない場合があります。

【info】いつもいろいろなテストなどをページ内のあちこちでやっているので、重かったり、壊れていたりするf^^;ことも多いですが、何卒、ご了承ください ( _ _ b

2005年12月11日

【Ajax】Operaの文字化け

Ajax , 『入門 Ajax』 , ブラウザ ブックマークに追加する ブックマーク-- Buzzurl  / Hatena  / Livedoor track feed


Ajax-MLで川俣さんのOperaと文字化けについての調査が流れていたので、検証してみました。

川俣さんの調査::まさか解決策不在なのか? OperaのXMLHttpRequestオブジェクトのresponseTextが文字化けする問題の更なる深み
http://mag.autumn.org/Content.modf?id=20051210160430

テスト1
リクエストを出す側とレスポンスデータのエンコードが違う場合
http://jsgt.org/ajax/ref/charset_test/responsetext_kawatest/htaddtype_txt-utf8_htm-sjis/kawa_test1.htm
.htaccessを、
AddType text/plain;charset=UTF-8 .txt
AddType text/html;charset=Shift_JIS .htm
読み込むtest_1_u8.txtを UTF-8
テストページを Shift_JIS

【結果】
「自動選択」OK
「Shift_JIS」文字化け

テスト2
リクエストを出す側とレスポンスデータのエンコードが同じShift_JISの場合
http://jsgt.org/ajax/ref/charset_test/responsetext_kawatest/htaddtype_txt-sjis_htm-sjis/kawa_test1.htm
.htaccessを、
AddType text/plain;charset=Shift_JIS .txt
AddType text/html;charset=Shift_JIS .htm
test_1_sjis.txtをShift_JIS
このファイルをShift_JIS

【結果】
「自動選択」OK
「Shift_JIS」OK

テスト3
リクエストを出す側とレスポンスデータのエンコードが同じUTF-8の場合
http://jsgt.org/ajax/ref/charset_test/responsetext_kawatest/htaddtype_txt-utf8_htm-utf-8/kawa_test1.htm
.htaccessを、
AddType text/plain;charset=UTF-8 .txt
AddType text/html;charset=UTF-8 .htm
test_1_u8.txtをUTF-8
このファイルをUTF-8

【結果】
「自動選択」OK
「UTF-8」OK



ユーザーの恣意的メニュー設定に依存する。というのは、なかなかデリケートです(^^;。リクエストするページとレスポンスされるデータのエンコードが違う場合は、Operaの「エンコード自動選択」は、サーバーを尊重しているようですが、もしかすると「Shift_JIS」などでは、サーバーのタイプ指定を無視してレスポンスされるデータも同じエンコードと推測してしまっているのでしょうか?、、、。

リクエストを出す側とレスポンスデータのエンコードが同じ場合は大丈夫なように見えますが、それはあくまでOperaの話ですので、更に、Safariなどでは、UTF-8である必要、および、エンコード処理などなんらかの回避などが必要です。

でも、もし、サーバーのContent-Type指定を無視してまで推測しているのだとすると、
クライアントの仕様としてどうなのでしょう?違う仕組みなのかなぁ、、、

( ブラウザがContent-Typeを推測してもよいケースは、わたしは、
サーバーからのContent-Type ヘッダが無い場合だけかと思っていました。)

RFC2616 http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec7.2.1
>メディアタイプが Content-Type ヘッダによって与えられない場合に限り、
>受信者はリソースの内容の検査や、あるいはリソースを識別するために使用
>されているURI の名前拡張子を調べる事によってメディアタイプを推測して
>みてもよい。
...ただ、この辺は、あまり自信がありませんので、このあたりの事情に詳しい方がいらっしゃいましたら、ぜひ教えてください 。


ちなみに、『入門Ajax』のサンプルでは、リクエストを出す側とレスポンスデータをUTF-8にしたうえで、一応、Safari、Konquerorなどの対策として強制的なエンコード(ECMAScript15.1.3 URI 処理関数仕様のencodeURI/encodeURIComponent相当)を行う方法を利用していますので、この文字化けの問題は発生しない、、かな(^^?、と思います。

つまり、リクエストを出す側の文字コードが何(Shift_JISやEUC)であっても、JavaScriptのdecodeURI/decodeURIComponentが、レスポンスをUTF-8以外と考える余地はありませんので、たとえば、SCRIPTタグでcharset="utf-8"と指定したのと同じ効果がある、はず、、、(^^;かなと。

ということで、ついでにテストしてみます。
『入門Ajax』のchapter04/04-02-01より

テストおまけ1
リクエストを出す側とレスポンスデータのエンコードが同じUTF-8の場合
http://jsgt.org/ajax/newmon/samples/chapter04/04-02-01/sample.htm

ページは、UTF-8
受け取るデータも、UTF-8でURIエンコード済み

これは、文字化けするはずがありません。

【結果】
「自動選択」OK
「UTF-8」OK

これの、リクエスト側ページをShift_JISに変えて見ます。どうでしょう?

テストおまけ2
リクエストを出す側とレスポンスデータのエンコードが違う場合
http://jsgt.org/ajax/newmon/samples/chapter04/04-02-01/sample_test_sjis.htm

ページは、Shift_JIS
受け取るデータは、UTF-8でURIエンコード済み

【結果】
「自動選択」OK
「UTF-8」OK

大丈夫でした(^^)v

#URIエンコードでデータ量が増えることに抵抗がある場合は、Opera、Sfari、Konquerorだけに適用することで、残りのシェアの大半を占めるIEとFirefoxのパフォーマンスを犠牲にしない方法も取れます。
#p.s.解決方法はもちろんこれだけではないと思います。<gzip圧縮してしまう手もあります(^^;