Actually I shouldn't call it "crashed", it just can't detect if there are 2 "ö"
Here is the code to duplicate the problem, one "ö" is fine, a space between 2 "ö ö" is fine, "öñ" (%F6%F1) is fine
but not "öö"
use utf8;
use Text::Unaccent;
use Encode::Detect::Detector;
## my $author = "Sch%F6ttl";
my $author = "Sch%F6%F6ttl";
$author =~ s/%([a-zA-Z0-9][a-zA-Z0-9])/pack('C',hex($1))/eg;
my $encoding = Encode::Detect::Detector::detect($author);
print "encoding: $encoding: $author <br>\n";
if($encoding){
$author = unac_string($encoding, $author);
print "after unac: $author<br>\n";
}