注意!(2015-07-22) このやりかただと、変換に失敗したときに、エラーログが大量に吐かれてしまいますので、注意してください。
たとえば、http://mikan.azulite.net/wiki.cgi?page=Git&action=SOURCEのやり方の方がスマートです。
==============================
ちょっと必要に迫られて対応した。
関数to_utf8あたりをいじって、Encode::from_toとか使ってなんとかするのかなぁ、と思っていたが、
結局は、ファイル読み書きするときに文字コードを変換する方針。
参考はこのへん
http://www.rwds.net/kuroita/program/Perl_unicode.html
diff -u gitweb.cgi new_gitweb.cgi
— gitweb.cgi 2010-11-24 01:03:30.697219844 +0900
+++ new_gitweb.cgi 2010-12-28 22:34:51.702462351 +0900
@@ -16,7 +16,10 @@
use Fcntl ‘:mode’;
use File::Find qw();
use File::Basename qw(basename);
binmode STDOUT, ‘:utf8’;
+use open IN => ‘:encoding(euc-jp)’;
+use open OUT => ‘:utf8’;
+use open ‘:std’;
BEGIN {
CGI->compile() if $ENV{‘MOD_PERL’};
—–追記
その後、shiftjis対応を迫られたので、上の通りで、euc-jpをshiftjisに変えたらうまくいった。
(binmode STDOUTは最初コメントしてたけど、その必要はなかったので、上の記事をちょっと修正しました。)