commit 1ace27099b20dfc5bb08fe764b30c9c2276729a9 Author: Heinrich Langos Date: Tue Apr 15 01:15:21 2008 +0200 Improved performance of utf8 to ascii encoding. diff --git a/src/ext/XMLhelper.pm b/src/ext/XMLhelper.pm index 2a230a3..b1ab134 100755 --- a/src/ext/XMLhelper.pm +++ b/src/ext/XMLhelper.pm @@ -124,12 +124,14 @@ sub xescaped { my $xutf = Unicode::String::utf8($ret)->utf8; #Remove 0x00 - 0x1f chars (we don't need them) $xutf =~ tr/\000-\037//d; - my $out = Unicode::String::utf8("")->utf8; - for (my $i = 0 ; $i < Unicode::String::utf8($xutf)->length ; $i++) { - if (Unicode::String::utf8($xutf)->substr($i,1)->ord > 127) { - $out .= '&#' . Unicode::String::utf8($xutf)->substr($i,1)->ord . ';'; + my $u16 = Unicode::String::utf8($xutf); + my $out = ""; #pure ascii + for (my $i = 0 ; $i < Unicode::String::length($u16); $i++) { + my $ccode = Unicode::String::substr($u16,$i,1)->ord; + if ($ccode > 127) { + $out .= '&#' . $ccode . ';'; } else { - $out .= Unicode::String::utf8($xutf)->substr($i,1) ; + $out .= chr($ccode) ; } } return $out;