é #### $ perl -CS -le 'print "na\x{EF}ivet\x{E9}"' naïveté $ perl -CS -le 'print "na\x{EF}ivet\x{E9}"' | perl -C0 -pe 's/(\P{ASCII})/"&#".ord($1).";"/ge' naïiveté $ perl -CS -le 'print "na\x{EF}ivet\x{E9}"' | perl -C0 -pe 's/(\P{ASCII})/sprintf "&#x%02X;", ord($1)/ge' naïiveté #### $ perl -CS -le 'print "na\x{EF}vet\x{E9}"' | perl -CS -pe 's/(\P{ASCII})/"&#".ord($1).";"/ge' naïveté $ perl -CS -le 'print "na\x{EF}vet\x{E9}"' | perl -CS -pe 's/(\P{ASCII})/sprintf "&#x%02X;", ord($1)/ge' naïveté #### $ perl -CS -le 'print "na\x{EF}vet\x{E9}"' | perl -C0 -pe 's/(\P{ASCII})/"&#".ord($1).";"/ge' | perl -C0 -pe 's/&#(\d+);/chr($1)/ge' naïveté #### $ perl -CS -le 'print "na\x{EF}vet\x{E9}"' | perl -C0 -pe 's/(\P{ASCII})/"&#".ord($1).";"/ge' | perl -MEncode -C0 -pe 's/&#(\d+);/chr($1)/ge; $_ = decode_utf8($_, 1); s/(\P{ASCII})/"&#".ord($1).";"/ge' naïveté #### $ perl -i.unmangled.by.$$ -MEncode -C0 -pe 's/&#(\d+);/chr($1)/ge; $_ = decode_utf8($_, 1); s/(\P{ASCII})/"&#".ord($1).";"/ge' all*your*broken*files.xhtml #### #!/usr/bin/env perl use strict; use warnings; use Encode; die "gimme args" unless @ARGV; $^I = ".unmangled.by.$$"; while (<>) { s/&#(\d+);/chr($1)/ge; $_ = decode_utf8($_, 1); s/(\P{ASCII})/ "&#" . ord($1) . ";" /ge; print; }