2005-11-26 (Sat)

Trac で遊んでみたよ その1 - 日本語

Trac 入れてから 1ヶ月位経ちましたが、大分手放せないツールになってきました。チケットとログの連動が便利杉。

さて、そんな Trac ですが、ソースコードブラウザで EUC や ShiftJIS が化けます。これ自体は trac.ini の default_charset を japanese.shift_jis とかにしておけば良いのですが、(勿論 python-japanese-codecs が必要ですが!!) 1つしか指定出来ないので、文字コードが混在している自分のウンコ環境では片方が確実に文字化けしてしまいます。

インタアクト さんの所の配布物に含まれるドキュメントによると、svn:mime-types を指定してやれば解決する可能性が高いらしいですが、全部チェックするのは面倒すぎなので、trac のソースコードをいじって対応してみました。

たいした変更じゃないのでやっておくと安心かも。

更新したファイル /usr/lib/python2.3/site-packages/trac/util.py

@@ -78,7 +78,8 @@
             u = unicode(text, charset)
         except UnicodeError:
             # This should always work
-            u = unicode(text, 'iso-8859-15')
+            #u = unicode(text, 'iso-8859-15')
+            u = unicode(text, 'japanese.euc-jp')
         return u.encode('utf-8')

この状態で default_charset を shift_jis にしておけば、EUC-JP と Shift_JIS の混在環境でもOKでした。あと Unicode も普通に表示出来ます。他は知らないけど、この辺の条件分岐に追記してやったりすれば簡単に対応出来そう。

ところで、今見ていて気が付いたのですが、インタアクトさんの所の日本語版が更新されて0.9版の配布も開始されていました。今回から、差分の提供じゃなくなったみたいですね。自分でも見た目をちょっといじってるので更新しずらいかも…。しかし何にせよこうして更新して下さるのには頭が下がる思いです。

Posted by Kyosuke Takayama at 2005-11-26 (Sat) 10:11 printable version

この記事へのコメント

1) hogepiyo (2005-12-03 (Sat) 17:46)

はじめまして。
Trac又は、Subversionの文字化けについて、お聞きしたいことがあります。
Tracでリポジトリブラウザやチェンジセットにおいて、ファイルによって日本語表示が正常に表示されたり文字化けしたりします。
両者ともS-JISのファイルで、プロパティも同じです。
Subversionで差分をunified-diffで出力させると、文字化けするファイルではS-JISコードで、正常表示のファイルではUTF-8となっています。
おそらくTracではUTF-8を扱うため、S-JISで出力されたファイルは文字化けすると考えられます。そうであるならば、Subversionの問題(仕様?)と考えられます。
このような現象をご存知でしたら、アドバイスいただけないでしょうか。

2) takayama (2005-12-04 (Sun) 15:03)

それは、多分 python の japanese-codes を入れて、trac.ini の default_charset を japanese.shift_jis とかにすれば平気でしょう。

japanese-codes はここにあります。
www.python.jp/Zope/download/JapaneseCodecs

Debian/Linux なら、apt-get install python-japanese-codecs で良いんですけどね…。

3) hogepiyo (2005-12-05 (Mon) 12:27)

takayamaさん。回答ありがとうございました。
ご指摘の対策は既に行っています。
ネットで調べましたが、このような現象は見あたりませんでした。
私の環境だけの問題なのかもしれませんね。

4) takayama (2005-12-05 (Mon) 14:07)

あー、なるほどー、そういう意味でしたか。
もしかして、いわゆる機種依存の文字が含まれているんじゃないでしょうか。

ていうか今試してみたらやっぱり文字化けしたので、きっとそうなんでしょう。
こればっかりはどうしようもないですよね。

5) wada (2005-12-23 (Fri) 17:53)

はじめまして。
私のところでは最近CVSからSubversionに移行しました。
CVSのコミットログに関して文字コードが混在しているウンコ環境でしたので、
cns2svnを同じような方法で修正して変換しました。
Tracはまだ使っていませんが、素敵な製品のようですね。

6) asesino (2006-01-23 (Mon) 21:59)

とても参考になりました。ありがとうございます。
/usr/lib/python2.3/site-packages/trac/util.py の修正は、
次のようにした方がよいと思います。
上記例では、バイナリファイル(画像とかOffice系、圧縮ファイル)が
リポジトリにある場合に euc-jp に変換しようとして、
閲覧やダウンロードできなくなります。
----
# Use the user supplied charset if possible
u = unicode(text, charset)
except UnicodeError:
- # This should always work
- u = unicode(text, 'iso-8859-15')
+ try:
+ u = unicode(text, 'japanese.euc-jp')
+ except UnicodeError:
+ # This should always work
+ u = unicode(text, 'iso-8859-15')
return u.encode('utf-8')

コメントはお気軽にどうぞ

Cookie に保存しますか?


・スパム対策のため、http:// を含むコメントの投稿は出来ません。
・スパムチェックのため、投稿がすぐに反映されない場合があります。
・メールアドレス入力欄には何も入力しないでください。

トラックバック

トラックバックURL: http://espion.just-size.jp/mt-tb.cgi/540

鷹の島: Trac で遊んでみたよ その2 - 色付け (2005-11-27 (Sun) 21:46) 0%

Trac で遊んでみたよ その1 - 日本語 ドキュメントにもあるのですが、SilverCity なるものを入れるとソースコードが色分けして表示されるようになって結構見やすくなります。 SilverCity @ SourceForge アーカイブをダウンロードしてきて、./setup.py install を実行する...


ハックる ハックる!!: Tracで日本語を表示しませう。 (2006-01-20 (Fri) 10:42) 0%

*trac-0.9.3-ja-1にバージョンアップ Trac の日本語パッチが...


ひで's: cvs2svnでコミットログの文字化け解消を試みる (2006-09-20 (Wed) 17:28) 0%

CVSのコミットログにsjisとeucが混在している環境だったので、svn移行時に文字化け解消にtry cvs2svn_lib/context.pyを修正。 +++ context.py.new      2006-09-20 17:27:17.000000000 +0900@@ -90,10 +90,16 @@     ##...



この記事のリンク元

 
Copyright (C) Kyosuke Takayama, All rights reserved.