Como obter UTF8 de uma variável hexadecimal?

Como obter UTF8 de uma variável hexadecimal?

Estou depurando um aplicativo para um cliente e encontrei informações do banco de dados que podem ser a solução. Peço ao cliente para extraí-lo, mas infelizmente o cliente me enviou os dados brutos em hexadecimal...

Peço ao cliente que me reenvie o texto simples das ferramentas de banco de dados, mas aguardando a resposta deles estou procurando uma solução bash.

Eu sei que os dados codificados são uma string codificada em UTF-8: existe uma maneira de decodificá-los com ferramentas Unix?

Responder1

Com xxd(geralmente enviado com vim)

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

Se o conjunto de caracteres da sua localidade (veja a saída de locale charmap) não for UTF-8 (mas puder representar todos os caracteres na string codificada), adicione um | iconv -f UTF-8.

Se não puder representar todos os caracteres, você poderá tentar | iconv -f UTF-8 -t //TRANSLITobter uma aproximação.

Responder2

Perl conta?

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

Se não, então talvez isso possa servir:

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

Precisamos de uma barra invertida literal para printf, mas ela é especial para ambos xargse, sedportanto, precisa ser duplicada duas vezes. ( \\\\x-> \\x-> \x)

informação relacionada