Convierta de forma segura cadenas Unicode en caracteres imprimibles

Convierta de forma segura cadenas Unicode en caracteres imprimibles

Tengo muchos archivos HTML que contienen cadenas Unicode mixtas como \303\243y caracteres imprimibles como %s. Lo que me gustaría hacer es convertir las cadenas Unicode en caracteres imprimibles de forma segura.

Descubrí que printf de GNU coreutils los convierte automáticamente, pero también aprendí por las malas hace algún tiempo que printf no es confiable si no sabes qué se va a imprimir:

$ env printf "$(cat filename.htm)"
printf: %20M: invalid conversion specification

También sé que bash puede realizar conversiones como esta, pero tendría que recorrer el archivo con una expresión regular, lo cual no es nada seguro:

$ echo $'\303\243'
ã

¿Existe alguna herramienta de línea de comandos que pueda procesar estos archivos de forma limpia y segura?

Respuesta1

Si los archivos no tienen otras barras invertidas:

$ printf %b\\n 'aa\303\243'
aaã

Si es así, podría duplicar barras invertidas que no estén seguidas de números enteros:

$ printf %b\\n "$(sed -E 's/\\/\\\\/g;s/\\(\\[0-7])/\1/g' <<< '\\a\na\303\243')"
\\a\naã

información relacionada