From: Steinar H. Gunderson Date: Tue, 2 Jan 2007 22:30:18 +0000 (+0100) Subject: Refactor the charset guessing. X-Git-Url: https://git.sesse.net/?p=pr0n;a=commitdiff_plain;h=b5572d621fe221ee9dcbf990118dd6aa69125cda Refactor the charset guessing. --- diff --git a/perl/Sesse/pr0n/Common.pm b/perl/Sesse/pr0n/Common.pm index 2ca54cf..bc59854 100644 --- a/perl/Sesse/pr0n/Common.pm +++ b/perl/Sesse/pr0n/Common.pm @@ -554,6 +554,20 @@ sub add_new_event { return (); } +sub guess_charset { + my $text = shift; + my $decoded; + + eval { + $decoded = Encode::decode("utf-8", $text, Encode::FB_CROAK); + }; + if ($@) { + $decoded = Encode::decode("iso8859-1", $text); + } + + return $decoded; +} + 1; diff --git a/perl/Sesse/pr0n/WebDAV.pm b/perl/Sesse/pr0n/WebDAV.pm index 6d116d0..2cadbcd 100644 --- a/perl/Sesse/pr0n/WebDAV.pm +++ b/perl/Sesse/pr0n/WebDAV.pm @@ -544,13 +544,7 @@ EOF } # Ugh, Windows XP seems to be sending this in... something that's not UTF-8, at least - my $takenby_given; - eval { - $takenby_given = Encode::decode("utf-8", $apr->param('takenby'), Encode::FB_CROAK); - }; - if ($@) { - $takenby_given = Encode::decode("iso8859-1", $apr->param('takenby')); - } + my $takenby_given = Sesse::pr0n::Common::guess_charset($apr->param('takenby')); if (defined($takenby_given) && $takenby_given !~ /^\s*$/ && $takenby_given !~ /[<>&]/ && length($takenby_given) <= 100) { $takenby = $takenby_given;