Googleサジェスト--Safariで文字化け

なぜ、文字化けするのか原因が知りたくて、GoogleサジェストのHTMLソースを表示させ、外部ファイル(JSファイル)のパスを確認し、JSファイルをダウンロードしました。
JSファイルを見てみると、かなり多いボリュームで書かれており、また関数名などは、何をやっているのかが想像つきにくいような名称(ほとんどが、「Cb」「qc」「vb」など短い関数名。また大文字と小文字で関数名が異なる場合があり、余計に分かりにい。)になっています。
したがって、JSファイルの中身の大まか処理の流れは分かりましたしたが、その詳細はここでは説明できません。ただ、文字化けの原因は、Googleにあるのではなく、Safari使用時に利用される「XMLHTTP」に原因があることが分かりました。
GoogleのJSファイルとは関係なく、XMLHTTPを使った簡単なプログラムでもSafariは日本語が文字化けします。正しくresponseTextを取得できないようです。本来UTF-8で返されているデータなのに、ISO-8859-1として取得しています。そのために文字化けが発生しています。ブラウザでの文字コードであれば、ブラウザメニューのエンコードを適切なものに人間が手動で変えてあげればいいですが、こういうXMLHTTPなどのプログラムで文字コードの認識が間違っている場合はどのように対処したらいいのでしょうね?
WEBプログラマーとしては非常に関心のある問題です。詳細なアルゴリズムの説明はここではできないのですが、キーワード候補となる10の一覧を配列形式を含むテキストデータで取得されるようになっています。その際には「Content-Type: text/html; charset=utf-8」とちゃんとHTTPリスポンスヘッダーは出ているのですが、SafariのXMLHTTPではこのリスポンスヘッダーは無視されているのでしょうね。
Googleで調べてみると、
● ヘチマ_BLOG : Safari の XMLHttpRequest
http://hetima.com/pblog/article.php?id=69
に解法のヒントとなるようなことが書かれているようですが、私の知識では分かりませんでした。
英語版がリリースされた時の記事:
● [Internet Watch]検索語の候補をリアルタイム表示する「Google Suggest」ベータ公開
http://internet.watch.impress.co.jp/cda/news/2004/12/13/5761.html
また、Googleサジェストの「よくある質問」のページには、
サポートされるブラウザは、Internet Explorer 6.0 以降でJavaScript とクッキーも有効になっている必要があります。
とありますし、WindowsでFirefoxやOperaでも動きますし、MacでもFirefoxやNetscapeでも動くわけですから、問題ないと言えば問題ないのかもしれません。でも、もし可能ならGoogleの方で、Safariのバグをフォローするような次期バージョンを発表してもらえればうれしいですね。
とにもかくにもすばらしいプログラムであり、Google開発チームの技術の高さを感じます。また、キーワードを入力するごとに、そのキーワードの組み合わせ候補をバックグラウンドで自動検索しているわけですから、Googleのサーバには相当な負荷がかかっているような気がします。それを処理できるGoogleもすごいです。
| 固定リンク
この記事へのコメントは終了しました。
コメント