検索エンジンののクエリ文字列について質問です。


現在、自作のアクセス解析を作成しております。

目的としては、検索エンジンからのアクセスの場合、javascriptのdocument.referrerを利用して、検索キーワードの文字列を取得し、phpでクエリ文字列を日本語に変換しデータベースに蓄積しておくというものです。

おおよそうまくいったのですが、例えば、「副業」というキーワードの場合、


q=%e5%89%af%e6%a5%ad
q=%95%9B%8B%C6

と二種類あることが解り、前者は問題なく処理できいき後者は???となり日本語に変換できませんでした。

調べたところ、前者はUTF-8で後者はShift-JISのようです。

前者のクエリ変換処理はPHPの「urldecode」を使ってます。

PHP内で後者のようなShift-JISのクエリ文字列を日本語に変換するにはどうすればよいでしょうか?

ちなみに
mb_internal_encoding は"UTF-8"を指定してます。


ご指導よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2007/09/25 21:39:58
  • 終了:2007/09/26 00:30:19

ベストアンサー

id:GEN111 No.1

GEN111回答回数472ベストアンサー獲得回数582007/09/25 22:06:32

ポイント100pt
$query = mb_convert_encoding(urldecode($q), 'utf8', 'auto') ;

一応これで自動判別して変換してくれますが、短い文字列だと誤変換する場合もあると思います。

id:ruijio

GEN111さん、いつもご解答頂き有難うございます。

上記で、解決できました。

いつも助かります。また宜しくお願い致します。

2007/09/26 00:28:05

その他の回答(1件)

id:GEN111 No.1

GEN111回答回数472ベストアンサー獲得回数582007/09/25 22:06:32ここでベストアンサー

ポイント100pt
$query = mb_convert_encoding(urldecode($q), 'utf8', 'auto') ;

一応これで自動判別して変換してくれますが、短い文字列だと誤変換する場合もあると思います。

id:ruijio

GEN111さん、いつもご解答頂き有難うございます。

上記で、解決できました。

いつも助かります。また宜しくお願い致します。

2007/09/26 00:28:05
id:naokn No.2

naokn回答回数43ベストアンサー獲得回数32007/09/25 23:38:45

ポイント35pt

mb_convert_encoding関数を使います。

$str = "%95%9B%8B%C6";

$str = mb_convert_encoding($str, "UTF-8", "SJIS");

というように使います。

PHP: mb_convert_encoding - Manual

id:ruijio

naoknさん、回答有難うございました。

前の方の回答で解決できました、ありがとうございます。

文字コードにはいつも頭を悩まされます。。

2007/09/26 00:29:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません