デコードで失敗する場合がある。
まず、goo.ne.jpの検索文字列はeuc-jpでエンコードされている。
今までは全部utf-8としてデコードしていたが、gooだけはeuc-jpを指定した。
今までもたびたび失敗する場合があったので調べてみると、googleの検索でもshiftjisになる場合があるようだ。
そして、Encodeモジュールにはguessという、文字コード判別機能がある。
なんだ、最初からこれを使えばよかった、と、shift-jisとutf-8を判別できるようになった、と思ったら、今度は判別に失敗して死んでしまう場合がある。
そこで、guessはgoogleだけに使い、guessに失敗したら今までどおりutf-8固定にして、成功したらもう一度guess指定でデコードした。
成功したときに2回デコードするのがアレだが、とりあえず動くので、後で直す。
というわけで、いつの間にか、6種類ものサーチエンジンに対応していた。
google, yahoo, baidu, bing, biglobe, goo
guessに失敗したときにutf-8にしてもダメな場合がある。euc-jpの場合もあるようだ。
結局、3種類全部試す必要があるのか・・・
decodeに失敗すると?がならぶ。いくつ並ぶかはわからないが、とりあえず二つ並んだら失敗とみなせるかな・・・
検索すると「失敗することがある」という情報がたくさん見つかるけどさ、これ、単にEncodeのバグじゃないの?