Skip to content
2011/07/29 / Javelina

WP-SlimStat-EXで一部の検索文字列が文字化けするのを直した

前々から気になってはいたのですが、WordPressのアクセス解析プラグインWP-SlimStat-EXで、解析された検索文字列が文字化けしているのをちょこちょこ見かけます。

文字化けしている検索文字列のリンク元をチェックしてみると、そのほとんどが

http://ezsch.ezweb.ne.jp/search/?query=○○○・・・

というアドレスでした。この http://ezsch.ezweb.ne.jp/search/ というのは、au(EZweb)のメニューから検索したときのURLでしょうか?auの携帯を使用したことがないのでわかりませんが、PCのブラウザでアクセスしてもエラーになるので(UA偽装でもエラー)、EZwebでのみアクセスできる検索エンジンっぽいです。

リンク元のURLを見ると、検索クエリ自体は普通にURLエンコードされてるので、文字セットが原因っぽい。
調べてみると、ezsch.ezweb.ne.jpに限らず、日本語を含む検索文字列で、文字セットShift_JISで検索された場合に文字化けが発生しているようです。

 
というわけで、WP-SlimStat-EXのエンコード処理部分を調べてみました。
plugins\wp-slimstat-ex\wp-slimstat-ex-config.phpの531~537行目↓
 

	function convert_encoding($str, $charset='') {
		if (!function_exists('mb_convert_encoding'))
			return $str;
		$charset = '' == $charset ? 'ASCII, UTF-8, EUC-KR, ISO-8859-1, JIS, eucJP-win, SJIS-win' : $charset;
		$str = mb_convert_encoding($str, get_option('blog_charset'), $charset );
		return $str;
	}

 
なんだかエンコードの元となる文字セットにあまり見かけたことのない文字セットが二つありますが、
“EUC-KR”は韓国語の文字セット、”ISO-8859-1″は西欧言語(ドイツ語、フランス語など)の文字セット。
この辺が怪しいですね・・・。

これらを消したり順番を入れ替えたりしてテストしてみましたが、どうやら”ISO-8859-1″が文字化けの原因のようです。

とりあえず日本語の文字化けを解消するには、下記のように”ISO-8859-1″を削除するか、位置を最後尾(SJIS-winの後ろ)に変えればOKです。
 

	function convert_encoding($str, $charset='') {
		if (!function_exists('mb_convert_encoding'))
			return $str;
		$charset = '' == $charset ? 'ASCII, UTF-8, EUC-KR, JIS, eucJP-win, SJIS-win' : $charset;
		/*もしくは↓*/
		/*$charset = '' == $charset ? 'ASCII, UTF-8, EUC-KR, JIS, eucJP-win, SJIS-win, ISO-8859-1' : $charset;*/
		$str = mb_convert_encoding($str, get_option('blog_charset'), $charset );
		return $str;
	}

 
このように変更してしばらく様子を見てみましたが、今のところ問題はないようです。ezsch.ezweb.ne.jpからのアクセスも、検索文字列がキチンと表示されるようになりました。

” ISO-8859-1″は、西欧言語圏のアクセスを想定していないのであれば取っ払ってしまっても問題はないかと思われます。同じ理由で、気になるようであれば”EUC-KR”も削除してしまってもいいかもしれません。
 

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。