my %html_ext_chars => (
chr(192) => 'À',
chr(224) => 'à',
chr(193) => 'Á',
chr(225) => 'á',
chr(194) => 'Â',
chr(226) => 'â',
chr(195) => 'Ã',
chr(227) => 'ã',
chr(196) => 'Ä',
chr(228) => 'ä',
chr(197) => 'Å',
chr(229) => 'å',
chr(200) => 'È',
chr(232) => 'è',
chr(201) => 'É',
chr(233) => 'é',
chr(202) => 'Ê',
chr(234) => 'ê',
chr(203) => 'Ë',
chr(235) => 'ë',
chr(204) => 'Ì',
chr(236) => 'ì',
chr(205) => 'Í',
chr(237) => 'í',
chr(206) => 'Î',
chr(238) => 'î',
chr(207) => 'Ï',
chr(239) => 'ï',
chr(210) => 'Ò',
chr(242) => 'ò',
chr(211) => 'Ó',
chr(243) => 'ó',
chr(212) => 'Ô',
chr(244) => 'ô',
chr(213) => 'Õ',
chr(245) => 'õ',
chr(214) => 'Ö',
chr(246) => 'ö',
chr(217) => 'Ù',
chr(249) => 'ù',
chr(218) => 'Ú',
chr(250) => 'ú',
chr(219) => 'Û',
chr(251) => 'û',
chr(220) => 'Ü',
chr(252) => 'ü',
chr(223) => 'ß',
chr(199) => 'Ç',
chr(231) => 'ç',
chr(209) => 'Ñ',
chr(241) => 'ñ',
chr(253) => 'ý',
chr(255) => 'ÿ',
chr(191) => '¿',
chr(161) => '¡',
);
my $html_ext_chars_re = '(' . join('|', map {"\\x" . sprintf("%lx", ord $_) . ""} keys %html_ext_chars) . ')';
sub escape_html_ext_chars {
s/$html_ext_chars_re/$html_ext_chars{$1}/g for (@_);
}