人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

目的としては、検索エンジンからのアクセスの場合、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"を指定してます。


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

●質問者: ruijio
●カテゴリ:インターネット ウェブ制作
✍キーワード:AD AF JavaScript JIS PHP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● GEN111
●100ポイント ベストアンサー
$query = mb_convert_encoding(urldecode($q), 'utf8', 'auto') ;

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

◎質問者からの返答

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

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

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


2 ● naokn
●35ポイント

mb_convert_encoding関数を使います。

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

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

というように使います。

PHP: mb_convert_encoding - Manual

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ