Wie erhält man UTF8 aus einer Hex-Variable?

Wie erhält man UTF8 aus einer Hex-Variable?

Ich debugge eine App für einen Kunden und habe in der Datenbank Informationen gefunden, die eine Lösung sein könnten. Ich habe den Kunden gebeten, sie zu extrahieren, aber leider hat der Kunde mir die Rohdaten im Hexadezimalformat gesendet ...

Ich bitte den Client, mir den Klartext aus den DB-Tools erneut zu senden, suche aber während ich auf seine Antwort warte, nach einer Bash-Lösung.

Ich weiß, dass es sich bei den codierten Daten um eine UTF-8-codierte Zeichenfolge handelt: Gibt es eine Möglichkeit, sie mit Unix-Tools zu decodieren?

Antwort1

Mit xxd(normalerweise mitgeliefert vim)

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

Wenn der Zeichensatz Ihrer Lokalisierung (siehe Ausgabe von locale charmap) nicht UTF-8 ist (aber alle Zeichen in der codierten Zeichenfolge darstellen kann), fügen Sie ein hinzu | iconv -f UTF-8.

Wenn nicht alle Zeichen dargestellt werden können, können Sie versuchen, | iconv -f UTF-8 -t //TRANSLITeine Annäherung zu erhalten.

Antwort2

Zählt Perl?

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

Wenn nicht, könnte das hier vielleicht helfen:

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

Wir benötigen einen wörtlichen Backslash für printf, aber er ist für beide speziell xargsund sedmuss daher zweimal verdoppelt werden. ( \\\\x-> \\x-> \x)

verwandte Informationen