* サーバー側は、小松氏のこれをbloga.jp:80へ置いてあります。
* クライアント側はWS処理をjQueryプラグイン化してみました。これです。
* ちなみに、このDemoサンプルは、下記5行でローカルでも別ドメインでもどこにでも設置出来ます。
<script src="http://bloga.jp/ws/jq/js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="http://bloga.jp/ws/jq/js/jquery.ws-0.3-noenc-pre.js" type="text/javascript" charset="utf-8"></script>
<script src="http://bloga.jp/ws/jq/conn/wschatdemo0.3.js" type="text/javascript"></script>
<script>/*サポートしてない時のalertメッセージを抑止*/$.ws.wsSetup({nonosupportmsg:true});</script>
<div id="wsdemos"></div>
【info】いつもいろいろなテストなどをページ内のあちこちでやっているので、重かったり、壊れていたりするf^^;ことも多いです。実験用ですので、カオス(混沌)をあえて意図したりもしますので、標準やValidとは無縁だったりしますが、何卒、ご了承ください ( _ _ b
【info】
最近はTwitterでぶつぶつ言ってることが多いです。
>http://twitter.com/toshirot
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の話ですので、更に、Safariなどでは、UTF-8である必要、および、エンコード処理などなんらかの回避などが必要です。
でも、もし、サーバーのContent-Type指定を無視してまで推測しているのだとすると、
クライアントの仕様としてどうなのでしょう?違う仕組みなのかなぁ、、、
( ブラウザがContent-Typeを推測してもよいケースは、わたしは、
サーバーからのContent-Type ヘッダが無い場合だけかと思っていました。)
ちなみに、『入門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圧縮してしまう手もあります(^^;

視力回復手術は銀座スポーツクリニック
![]()
アスリートが選ぶレーシックは、銀座スポーツクリニック
夏休みのかみさんとまりもの帰省用にちょっと調査中---
≪国内格安航空券≫出張・帰省・旅行に最適
全国どこでも出発!国内格安航空券
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |




