$string =~ s/([^a-zA-Z0-9])/'&#'.unpack('U0U*',$1).';'/eg; #### use HTML::Entites qw( encode_entities ); $string = encode_entities($string); #### use Encode qw( encode ); $string = encode('US-ASCII', $string, Encode::FB_HTMLCREF); #### use Encode qw( from_to ); sub unicode_decode { my $string = shift; from_to($string, 'UTF-8', 'US-ASCII', Encode::FB_HTMLCREF); return($string); }