2005/5/18 水曜日

WebSVN で ログメッセージ が化ける (日本語)

カテゴリー: おぼえ書き — ryu @ 11:23:56

cvs 信者なんだけどたまには、subversion 使おうと意気込んで、
ViewCVSセットアップしてた。が、 py-module がコンパイル通らず、
PHPで動く WebSVN を使うことにする。

設置と一通り動くところは簡単に出来るのだが、
ログメッセージが文字化け。(v1.61)

さくっと見てみると svn のコマンド実行するときに、
環境変数 LANG が設定されていないのが原因。
include/command.inc で、quoteCommand() の戻りを

return “LANG=ja;export LANG;”.$cmd;

にして、 config.inc で、

$config->setInputEncoding(”EUC-JP”);

にする

やたー、日本語出たーと思うのもつかの間、
登録しているファイル見ると文字化けする…。
登録ファイルの文字コードがSJISだから…。
つまりログメッセージはEUC・ファイルはSJISとややこしいことに。
登録ファイルの文字コード触るのはちょっと気色悪いので、

$config->setInputEncoding(”SJIS”);

にすることにして、ログメッセージを変換することにする。
include/svnlook.inc の、getLogDetails()で強制変換。
EUCのファイルをSJISと思い込んで読んでいるので、

$log["message"] = mb_convert_encoding( $output[3], “SJIS”, “EUC-JP”);

$log["message"] .= “\n”.mb_convert_encoding( $output[$pos], “SJIS”, “EUC-JP” );

として強制的に変換してやる。

今度こそ出来た~。ヽ(´ー`)ノ

# cache 配下に出来るファイルは compress が掛かってるんで、
 普通に見ると文字化けしているように見える罠
 zcat すべし。

31 queries. HTML convert time: 0.307 sec. Powered by WordPress 2.8