現在、自作のアクセス解析を作成しております。
目的としては、検索エンジンからのアクセスの場合、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"を指定してます。
ご指導よろしくお願いいたします。
$query = mb_convert_encoding(urldecode($q), 'utf8', 'auto') ;
一応これで自動判別して変換してくれますが、短い文字列だと誤変換する場合もあると思います。
$query = mb_convert_encoding(urldecode($q), 'utf8', 'auto') ;
一応これで自動判別して変換してくれますが、短い文字列だと誤変換する場合もあると思います。
GEN111さん、いつもご解答頂き有難うございます。
上記で、解決できました。
いつも助かります。また宜しくお願い致します。
mb_convert_encoding関数を使います。
$str = "%95%9B%8B%C6";
$str = mb_convert_encoding($str, "UTF-8", "SJIS");
というように使います。
naoknさん、回答有難うございました。
前の方の回答で解決できました、ありがとうございます。
文字コードにはいつも頭を悩まされます。。
GEN111さん、いつもご解答頂き有難うございます。
上記で、解決できました。
いつも助かります。また宜しくお願い致します。