Safari の Ajax 文字化け対処
「BlogPeople 等のリンクリストによる表示の遅延を解消する(その2:Ajax編)」で「Safari で文字化けします」というご質問を頂き、不具合を修正致しました。
1.問題点
調べたところ、(今更ですが)Safari2.0 では UTF-8 でも Ajax の responseText で文字化けすることを知りました。
WEBプログラミング NOW!:Googleサジェスト--Safariで文字化け
XMLHTTPを使った簡単なプログラムでもSafariは日本語が文字化けします。正しくresponseTextを取得できないようです。本来UTF-8で返されているデータなのに、ISO-8859-1として取得しています。そのために文字化けが発生しています。
この問題は日本語が含まれていなければ顕在化しませんが、BlogPeople のリンクリストは当然日本語だらけなので、Safari で閲覧されている場合はリンクリストが文字化けして表示されます。
UTF-8で表示しているブログ等で、ブラウザの文字コードを「ISO-8859-1」にすれば同じ事象を体験できます。
2.対処
下記のサイトで対処方法が掲載されています。
「BlogPeople 等のリンクリストによる表示の遅延を解消する(その2:Ajax編)」については、紹介されているコードを JavaScript に挿入することで文字化けを回避しましたので、本カスタマイズをご利用の方は、配布 JavaScript(bp.js)を差し替えてお使いになることをお勧めします。
当サイトで紹介している、responseText に日本語を含む Ajax カスタマイズについても別途修正したいと思います。また当サイト自体も Ajax を多用しているので JavaScript の実装を見直します。
3.参考・関連サイト
- JavaScript++かも日記:responseされる文字コードの調査
- ヘチマ_BLOG:Safari の XMLHttpRequest
- bricklife.weblog.*:Ajax で文字化けする条件を調査してみた
- escape()エンコード結果
- iPhoneで通信量を調べる方法
- Ajaxによるモジュール化(jQuery版)
- Movable Type 4.2 における mt.js の変更点(その1:Ajax 対応と window.onload の代替スクリプト)
- Ajax でキャッシュさせない方法
- Ajax によるモジュール化
- 複数ブログで Ajax 月送りカレンダーを利用する方法
- はてなブックマークの「人気エントリー/注目エントリー」を Ajax + Perl でブログに表示する
- BlogPeople 等のリンクリストによる表示の遅延を解消する(その2:Ajax編)
≫ Safariでdojoを使うと文字化けする件 from 天使やカイザーと呼ばれて
こみゅすけは,dojoというライブラリをかなりの勢いで使用している。dojoは数... [続きを読む]
yujiro 様
文字化けについてなのですが、どのエントリーにコメントして良いのかわからず、ここへエントリーしてしまいました。
ADC にて公開されています、最新の Windows 版 Safari 3.0.4 にて、当サイトを表示したところ、サイドバー等が文字化けしてしまいました。
中央に表示されているエントリー部分は文字化けしていないようです。後、お知らせの部分も文字化けしています。
まだ、正式版でないので待つしかないでしょうが。。
>tattsunさん
こんにちは。
情報ありがとうございました。
今のところ当方でも解消策がみつかっておりません。
お役に立てず申し訳ございません。