http://search.web-sun.com/sch_tool/mix_sach.html
上記のようなメタ検索を、PHPで自作したいのですが、
文字化けの問題でつまづいています。
グーグル・ヤフーではできたのですが、ウィキペディア・テクノラティだと
日本語で検索した場合、文字化けしてしまうのです。
URLをデコードするのか、サイトの文字コード別に条件を付けなければ
ダメなのでしょうか?
「mb_convert_encoding」で試してみたり「.htaccess」の変更などを
行ってみたのですが、上手く作動できませんでした。
解決法が分かりませんので、どうか教えて頂ければ嬉しいです。
以下PHPスクリプトです。
------------------------------------------------------------
<?php
$strKey=urlencode($_POST['keywd']);
switch($_POST['eng']){
case "yahoo":
$url="http://search.yahoo.co.jp/bin/search?p=";
break;
case "google":
$url="http://www.google.com/search?hl=ja&ie=euc-jp&q=";
break;
}
header("Location: ".$url.$strKey);
?>
------------------------------------------------------------
これを「POST」形式でフォームの処理をしています。
PHPのバージョンは4.4.2です。
(レンタルサーバーなので バージョンを変える事は難しいです)
文字コードは「EUC-JP」です。
Googleは UTF-8 へのエンコードが必要なんですよね。
URLエンコードと検索エンジン
http://www.bousaid.que.jp/software/urlencode/index.php
[抜粋]
仕組みはいたってシンプルです。(カッコ内はPHP関数)
1.入力フォームから受け取った文字列の文字コードを変更する(mb_convert_encoding)
2.URLエンコード(URLデコード)する(urlencode,urldecode)
このような感じになるのではないでしょうか?
-------------------------------------------------------------------
$data = '検索文字';
$data = mb_convert_encoding($data,"UTF-8",mb_internal_encoding());
$data = urlencode($data);
または、
$data = rawurlencode($data);
-------------------------------------------------------------------
[その他参考]
PHPとJavaScriptのURIエンコードを比較
http://jsgt.org/ajax/ref/charset_test/responsetext/php/urlencode...
Tip-25:PHPでエンコード/デコード
ありがとうございます。
ウィキペディア・テクノラティが検索できるようになりました!
UTF-8のサイトでの検索の場合、各caseごとに
$data = mb_convert_encoding($data,"UTF-8",mb_internal_encoding());
を足せば大丈夫でした。
助かりました!
ありがとうございました!!