But this line:
$field =~ s/([^\x20-\x7E])/sprintf("&#x%X;", ord($1))/eg;
Won't that convert anything greater than or equal to a "space" (ascii 0x20) up to 0xfe? And why are you skipping 0xff?
And other than those things, isn't that really equivalent to what I was doing? Except that, it appears you are outputting ’ where I was outputting \, and are those in fact equivalent?
Update: I just realized I missed the fact that your regex has '^', so it negates those characters. That makes a lot more sense.
But I would still ask, isn't the functionality of this subroutine the same as my original (other than the extra 'x' in your output "#xNN;", which I still think is wrong), or am I missing something else?
|Replies are listed 'Best First'.|
Re^3: Cleaning up non 7-bit Ascii Chars for XML-processing
by ikegami (Patriarch) on Nov 11, 2010 at 20:55 UTC
by ikegami (Patriarch) on Nov 11, 2010 at 21:06 UTC