¿Cómo obtener UTF8 de una variable hexadecimal?

¿Cómo obtener UTF8 de una variable hexadecimal?

Estoy depurando una aplicación para un cliente y encontré la información de la base de datos que podría ser la solución. Le pido al cliente que lo extraiga pero lamentablemente el cliente me envió los datos sin procesar en hexadecimal...

Le pido al cliente que me reenvíe el texto plano de las herramientas de base de datos pero esperando su respuesta estoy buscando una solución bash.

Sé que los datos codificados son una cadena codificada en UTF-8: ¿hay alguna manera de decodificarlos con herramientas Unix?

Respuesta1

Con xxd(generalmente enviado con vim)

$ echo 5374c3a97068616e650a | xxd -p -r
Stéphane

Si el juego de caracteres de su configuración regional (consulte el resultado de locale charmap) no es UTF-8 (pero puede representar todos los caracteres de la cadena codificada), agregue un archivo | iconv -f UTF-8.

Si no puede representar a todos los caracteres, puedes intentar | iconv -f UTF-8 -t //TRANSLITobtener una aproximación.

Respuesta2

¿Perl cuenta?

$ echo "68656c6c6f0a" | \
  perl -ne 'tr/a-fA-F0-9//cd; print pack("H*", $_)'
hello

Si no, entonces tal vez esto podría servir:

$ echo "68656c6c6f0a" | sed -Ee 's/[0-9a-fA-F]{2}/\\\\x&/g' | xargs printf 
hello

Necesitamos una barra invertida literal para printf, pero es especial para ambos xargsy, sedpor lo tanto, debe duplicarse dos veces. ( \\\\x-> \\x-> \x)

información relacionada