Just curious why the giant string map. I see that you are not using the properly accented characters with your replacements.
This code will replace them correctly with all the right accents.
proc dehex {string} {
set string [subst [regsub -nocase -all {\\u([a-f0-9]{4})} $string {[format %c [decimal \1]]}]]
return $string
}
proc decimal {hex} { return [expr 0x$hex] }
proc hex {decimal} { return [format %x $decimal] }
_________________________________________________________________________________________________
To use this code , you would just put:
set news [dehex $news]
Instead of:
set news [string map ...................]