... | ... |
@@ -59,10 +59,12 @@ sub startup { |
59 | 59 |
$git->bin($git_bin); |
60 | 60 |
|
61 | 61 |
# Encoding suspects list for Git |
62 |
- my $encoding_suspects |
|
63 |
- = $conf->{basic}{encoding_suspects} ||= 'UTF-8'; |
|
64 |
- $encoding_suspects = [split /,/, $encoding_suspects] unless ref $encoding_suspects eq 'ARRAY'; |
|
65 |
- $git->encoding_suspects($encoding_suspects); |
|
62 |
+ my $encoding_suspects_str = $conf->{basic}{encoding_suspects}; |
|
63 |
+ my @encoding_suspects; |
|
64 |
+ if ($encoding_suspects_str) { |
|
65 |
+ @encoding_suspects = split /,/, $encoding_suspects_str; |
|
66 |
+ } |
|
67 |
+ $git->encoding_suspects(\@encoding_suspects); |
|
66 | 68 |
|
67 | 69 |
# Repository Manager |
68 | 70 |
my $manager = Gitprep::Manager->new; |
... | ... |
@@ -1735,12 +1735,24 @@ sub _chop_str { |
1735 | 1735 |
|
1736 | 1736 |
sub _dec_guess { |
1737 | 1737 |
my ($self, $str) = @_; |
1738 |
- |
|
1739 |
- my $enc = Encode::Guess->guess($str, @{$self->encoding_suspects}); |
|
1740 |
- # fallback default encoding if multile guess result |
|
1741 |
- # http://perl-users.jp/articles/advent-calendar/2009/casual/10.html |
|
1742 |
- $enc = $self->default_encoding unless ref $enc; |
|
1743 |
- |
|
1738 |
+ |
|
1739 |
+ my $encoding_suspects = $self->encoding_suspects; |
|
1740 |
+ |
|
1741 |
+ my $enc; |
|
1742 |
+ if (@$encoding_suspects) { |
|
1743 |
+ for my $encoding_suspect (@$encoding_suspects) { |
|
1744 |
+ my $ret = Encode::Guess->guess($str, $encoding_suspect); |
|
1745 |
+ if (ref $ret) { |
|
1746 |
+ $enc = $encoding_suspect; |
|
1747 |
+ last; |
|
1748 |
+ } |
|
1749 |
+ } |
|
1750 |
+ $enc //= $self->default_encoding; |
|
1751 |
+ } |
|
1752 |
+ else { |
|
1753 |
+ $enc = $self->default_encoding; |
|
1754 |
+ } |
|
1755 |
+ |
|
1744 | 1756 |
my $new_str; |
1745 | 1757 |
eval { $new_str = decode($enc, $str) }; |
1746 | 1758 |
|