Posted to tcl by kbk at Sun Aug 03 22:06:37 GMT 2008view pretty
#----------------------------------------------------------------------
#
# backslashify --
#
# Converts a UTF-8 string to a plain ASCII one with escapes.
#
# Parameters:
# string -- String to convert
#
# Results:
# Returns the converted string
#
# Side effects:
# None.
#
#----------------------------------------------------------------------
proc backslashify { string } {
set retval {}
foreach char [split $string {}] {
scan $char %c ccode
if { $ccode >= 0x0020 && $ccode < 0x007f
&& $char ne "\"" && $char ne "'"
&& $char ne "\{" && $char ne "\}" && $char ne "\["
&& $char ne "\]" && $char ne "\\" && $char ne "\$" } {
append retval $char
} elseif {$ccode < 0x100} {
append retval \\ [format %03o $ccode]
} else {
append retval \\u [format %04x $ccode]
}
}
return $retval
}