Untitled

gitweb.cgi で日本語 (Shift_JIS) の文字化け回避

to_utf8 という関数があるのですが、ここを以下のようにすると

日本語が文字化けしなくなるはずです。

Perl は長らく書いてないので正直適当です。

sub to_utf8 {
	my $str = shift;

	return undef unless defined $str;
	
	my $enc = guess_encoding($str, qw/shiftjis/);
	if (ref $enc && $enc->name eq "shiftjis") {
		utf8::decode($str);
		return decode('shiftjis', $str, Encode::FB_DEFAULT);
	}
	
	if (utf8::valid($str)) {
		utf8::decode($str);
		return $str;
	} else {
		return decode($fallback_encoding, $str, Encode::FB_DEFAULT);
	}
}

※そういば use Encode::Guess; を最初の方に追加しなきゃいけなかったかも