User:
Pass:
Keep:   
Xoops Cube Project
XOOPS Cube Project Site
Powered by Google


Powered by XOOPS Cube Legacy 2.1.8
PukiWikiMod 1.5.1
WordPress Module 0.6.0 Alpha
作業記録/2004-02-11 のバックアップ(No.9)
[ リロード ]   [ ソース ]  [ トップ | 一覧 | 単語検索 | 最新 | バックアップ | ヘルプ ]


PHP-Stats PROでの日本語の扱い

すでに、xoops asGroupwareで日本語化が進んでいるのだから、素直にお願いしてテストさせてもらっても
良いのだが、メッセージなどは日本語である必要性を感じなかったので、本家の物をそのまま使っていたけど、
幾つかの点で日本語を扱うためには、手を加えてやらないといけない事がある事がわかってきた。

特に、ページのタイトルやreferer等は、JavaScriptによってencodeされて渡されるが、 日本語文字に対する
encode関数の出力は、IEとNetscape系では異なり、中でもIEでは日本語がUCS-2に変換されて
%uXXXXという形式に変換される。
この%uXXXXという形式は、PHPのrawurldecodeとかでは対応出来ないようであり、また英数文字は
そのまま出力されるので、扱いにくい文字列になっている。
このため、PHP-Stats PROもそのままでは、ページのタイトルや、検索文字列の日本語部部分は、
%uXXXXという文字列の羅列で出力されてしまう。
そこで、この%uXXXXを含む文字列をEUC-JPに変換する関数を作って、PHP-Stats PROの画面出力部分で
この関数を呼び出してやる様に少し手を加えた。
本来は、DBに書き込むときに変換する方が正しいのだと思うけど、DBアクセス周辺を触るのは、ちょっと
恐かったので、表示の際に加工するだけにとどめてある。だから、一部の検索機能では、うまくマッチしない
場合も出てくるが、これは当面あきらめる事にする。

<参考> 追加した関数
// %uXXXXという文字列を含む文字列を正しい日本語文字列に戻す。
function conv_knj_escape($str)
{
    return mb_convert_encoding(
                preg_replace_callback("/%u([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])/","_conv_escape",$str),
                "EUC-JP","auto");
	
}

function _conv_escape($matches){
    return mb_convert_encoding(rawurldecode("%".$matches[1]."%".$matches[2]),"EUC-JP","UCS-2");
}


コメント

  • 上の検索結果を日本語にするスクリプトはどのファイルに組み込むのですか? -- 通りすがりさん 2004-12-31 (金) 21:10:05
  • 私も知りたいです。ご教授お願い致します -- 通りすがりさん 2005-02-05 (土) 01:35:12
  • Php-statsを使っているのですが、文字化けをどうにかしたいと思っています。この関数を組み込む方法をお教えいただけないでしょうか。よろしくお願いします。 -- mita 2005-04-17 (日) 21:15:48
  • 最近、xoops as Groupwareで、PHP-Statsの日本語版が公開されているので、これを使われた方が良いですよ。
    当サイトも結局コチラに変えました。 :p -- nobunobu 2005-04-19 (火) 21:31:00
  • 自分も日本語版を使っているのですが、訪問者詳細などでGoogleの検索結果ページに上手く飛べないのです。Php-Stats_0.1.9_j.zipのバージョン0.43を使っていますが、もっと新しいバージョンがあるのでしょうか? -- mita 2005-04-19 (火) 21:57:35
  • こちらと同じ0.1.8にしてみました。このバージョンは文字化けしないのですね。0.1.9.1の機能も捨てがたいですが、しばらくこのまま様子を見ようと思います。ありがとうございました。 -- mita 2005-04-24 (日) 07:21:10
  • Hello, это я: -- Bill 2006-10-28 (土) 01:34:16

お名前: