駄開発駄メモ 駄開発に関することを。

2011年5月30日

BkSearchでGoogle検索した後、続けて検索すると文字化けする

Filed under: プログラム — タグ: , , , , — m.takemi @ 9:27 PM

BkSearch と Googleデスクトップ検索の連携」に引き続き指摘頂いた。

BkSearch.conf(EdSearch.conf)のデフォルト設定だと、
以下のように

[Google 日本 で検索(&G)]
FrontURL=http://www.google.com/search?num=50&hl=ja&lr=lang_ja&ie=UTF-8&oe=sjis&q=
Encode=UTF8

・ie=UTF-8
・oe=sjis
になっています。

この設定で検索した場合、初回は正常に表示されますが、
続けて検索ボタンを押した場合、URLは以下のようになってしまった。

http://www.google.com/search?num=50&hl=ja&lr=lang_ja&ie=UTF-8&oe=sjis&q=%E6%A4%9C%E7%B4%A2#num=50&hl=ja&lr=lang_ja&ie=Shift_JIS&oe=Shift_JIS&tbs=lr:lang_1ja&q=%E6%A4%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=%E6%A4%9C%E7%B4%A2&・・・

・ie=UTF-8
・oe=sjis
・ie=Shift_JIS
・oe=Shift_JIS

でもって、文字化けする。

なぜ???

2byte文字を含む場合のみ文字化けするので、
2回目の検索の時は、ie=UTF-8が機能していないっぽい。
まぁ、ieが2つ指定されてるから当然か。。

「&oe=sjis」を削除して、以下のようにすると正常に動作するようになりました。

[Google 日本 で検索(&G)]
FrontURL=http://www.google.com/search?num=50&hl=ja&lr=lang_ja&ie=UTF-8&q=
Encode=UTF8

2011年5月29日

BkSearch と Googleデスクトップ検索の連携

Filed under: プログラム — タグ: , , , , — m.takemi @ 6:51 PM

について、質問メールを頂いたので調べてみました。

Googleデスクトップ検索で”test”を検索してみたところ、
以下のようなURLになったので、

http://127.0.0.1:4664/search?q=test&flags=68&num=10&s=ZoDBIB5DxUVUQh9oa5fpdKn6zVA

“test” → “テスト” に変えて見たところ、

http://127.0.0.1:4664/search?q=テスト&flags=68&num=10&s=ZoDBIB5DxUVUQh9oa5fpdKn6zVA

「無効なリクエスト」と言われてしまう。

URLを直接変更するのではなく、Googleデスクトップ検索で”テスト”を検索すると、
以下のURL。

http://127.0.0.1:4664/search?q=%E3%83%86%E3%82%B9%E3%83%88&flags=68&num=10&s=MqeS2Ad2-EPMUhVeranCUF-Lp1I

“test”と”テスト”で検索したURLを並べてみる。

http://127.0.0.1:4664/search?q=test&flags=68&num=10&s=ZoDBIB5DxUVUQh9oa5fpdKn6zVA
http://127.0.0.1:4664/search?q=%E3%83%86%E3%82%B9%E3%83%88&flags=68&num=10&s=MqeS2Ad2-EPMUhVeranCUF-Lp1I

検索文字列が違ってるのは当然だけど、s=に続く文字列も異なっていた。
“ZoDBIB5DxUVUQh9oa5fpdKn6zVA”
“MqeS2Ad2-EPMUhVeranCUF-Lp1I”

これが何者かを調べたところ、
Query API Developer Guide – Google Desktop APIs – Google Code
によると、「security token」というものらしい。

検索文字列によって変わるってことは、外部から使えない??とか思ってたら、すぐ下の方に

Getting the Stored Query URL – Query API Developer Guide – Google Desktop APIs – Google Code
ってあった。

Stored Query というものがよく分からなかったけど、ストアドプロシージャとか、ストアドファンクションのような類であれば使えそうなので、書いてある通り、
レジストリ”HKEY_CURRENT_USER\Software\Google\Google Desktop\API\search_url”
に設定されているURL(自分の環境では、”http://127.0.0.1:4664/search&s=x24RLVrkvjGLijzu8wE1zMrW9As?q=”)をコピーして使ってみたところ上手くいった。

BkSearch.conf(EdSearch.confでも同じ)に書くと、

[Googleデスクトップ検索(&T)]
FrontURL=http://127.0.0.1:4664/search&s=x24RLVrkvjGLijzu8wE1zMrW9As?q=
Encode=UTF8

num=50とか加えておけば、検索数が50件になる模様。

[Googleデスクトップ検索(&T)]
FrontURL=http://127.0.0.1:4664/search&s=x24RLVrkvjGLijzu8wE1zMrW9As?num=50&q=
Encode=UTF8

この方法が未来永劫使えるのかは分からないけど、一先ずこれで行けそう。

Powered by WordPress