Skip to main content.

Google Web APIs で日本語が通らない件

私はGoogle Web APIsの利用から遠ざかってかなり経つのですが、
http://japan.nucleuscms.org/bb/viewtopic.php?t=1335
にて、この2005年8月から日本語キーワードを正しく受け付けていないという情報を知りました。

で、さっそくググってみたところ、理解できた模様。
http://nakahara21.com/phpgoogle/sample.php
↑これがそのサンプル。
もとは、
http://tdiary.ishinao.net/20030920.html
の方で配布されているサンプルスクリプトです。

何を変えたらよいのかというと...

http://api.google.com/search/beta2
に渡すキーワードを、
『生のUTF-8ではなく、バイナリUTF-8HTMLユニコード(Unicode)形式にする』
事です。言葉違うかな、たぶん違う気がするな。ま、いっか。


ちょうど手元にGPLなコードがあったので、再利用してみたらうまくいった、という結果。
サンプルスクリプトの改変版、置いておきますので、どなたか解析して正しい解説をお願いします(^^ゞ
ダウンロード: phpgoogle20050901.zip
次の記事にajax動作バージョンを置いてます。

これを利用する場合は、「GoogleSearch.php」を開いて、10行目に自分のapiキーを入れるだけです。
一応、「de.php」がキーワード変換用クラスです。ちょっと余分なものも入ってます。
私自身はまったく理解しておりません。ごめんなさい。
ついでに、相変わらずクラス名とか変数名がかなりテキトーで適切ではないです。すいません。

それと、デフォでsample.phpはEUC-JPで開くようになっているのですが、これをUTF-8で開いてもうまくいきませんでした(変更自体は「GoogleSearch.php」の12,13行目です)。
これは、私のこのサーバのmbstring.http_inputとかが関係あるのだと推測しています。
getでキーワードを渡しているため、勝手に内部的に文字コードが変換されているのでうまくいかない様子。
((mb_http_input("P") == "") || ( strtolower( ini_get("mbstring.http_input") ) == "pass"))
とかいう処理振り分けがたぶん必要。
(http://www.kowa.org/modules/wordpress/archives/2004/06/20/224/の後半に書いてある事が頭に残っているのでこれかな、と予想しているんだけど)

【2005-09-01 22:08 追記】
相変わらず嘘書いてました。単純な私のミスでした。
UTF-8でも利用できます。
GoogleSearch.phpの最後の所は、
    function Fetch() {
        $this->Index++;
        if ($this->Index $this->Count()) {
            $this->Items = array();
            $items $this->result['resultElements'][$this->Index];
                foreach (
                    array(
                    'title' => 'title',
                    'summary' => 'snippet',
                    'url' => 'URL'
                    ) as $key => $value) {
                        if(_CHARSET != 'UTF-8') {
                            $this->Items[$key] = mb_convert_encoding($items[$value], _CHARSET'utf8');
                        }else{
                            $this->Items[$key] = $items[$value];
                        }
                }
            return true;
        }
        return false;
    } 
が正解です。
スクリプトよく読んでませんでした。
すでにダウンロード済みの方は修正お願いします。
2005-09-01 22:13現在、配布ファイルは修正済みのものに差し替えてます。


こんなかんじでどうでしょう?
情報集まるとイイですね。

Comments

刺激が欲しいなら大人のオモチャサイト

Posted by 大人のオモチャ at 02/05/10 00:24:54

コスプレで思い出の一日を作ろう

Posted by コスプレ at 02/14/10 15:10:30

Add Comment

:

:
: