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


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

目的としては、検索エンジンからのアクセスの場合、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/26 00:30:19
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:GEN111 No.1

回答回数472ベストアンサー獲得回数58

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

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

id:ruijio

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

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

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

2007/09/26 00:28:05

その他の回答1件)

id:GEN111 No.1

回答回数472ベストアンサー獲得回数58ここでベストアンサー

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

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

id:ruijio

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

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

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

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

回答回数43ベストアンサー獲得回数3

ポイント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

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

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

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

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

回答リクエストを送信したユーザーはいません