Posted to tcl by kbk at Mon Apr 16 15:41:55 GMT 2007view pretty

set utf8re [makeUtf8Regexp]
puts "utf8re is [string length $utf8re] chars"
set utf8str $utf8re+

proc fixBadUtf8 {data} {
    variable utf8str
    set retval {}
    set i 0
    foreach pair [regexp -all -indices -inline $utf8str $data] {
	foreach {start end} $pair break
	append retval [string repeat \ufffd [expr {$start-$i}]] \
	    [string range $data $start $end]
	set i [expr {$end+1}]
    }
    append retval [string repeat \ufffd [expr {[string length $data]-$i}]]
    return $retval
}