61 votes

Comment convertir \uXXXX unicode en UTF-8 à l'aide des outils de la console dans * nix

J'utilise curl pour obtenir une réponse URL, c'est une réponse JSON et elle contient des caractères nationaux échappés Unicode comme \u0144 (n) et \u00f3 (ó) .

Comment puis-je les convertir en UTF-8 ou tout autre encodage pour les enregistrer dans un fichier ?

48voto

Kevin Points 23308

C'est peut-être un peu moche, mais echo -e devrait le faire :

 echo -en "$(curl $URL)"

-e interprète les échappements, -n supprime le saut de ligne que echo ajouterait normalement.

Remarque : l' \u fonctionne dans le bash intégré echo , mais pas /usr/bin/echo .

Comme indiqué dans les commentaires, il s'agit de bash 4.2+, et 4.2.x a un bogue gérant les valeurs 0x00ff/17 (0x80-0xff).

42voto

raphaelh Points 697

Je ne sais pas quelle distribution vous utilisez, mais uni2ascii devrait être inclus.

 $ sudo apt-get install uni2ascii

Cela ne dépend que de libc6, c'est donc une solution légère (uni2ascii i386 4.18-2 fait 55,0 ko sur Ubuntu) !

Ensuite pour l'utiliser :

 $ echo 'Character 1: \u0144, Character 2: \u00f3' | ascii2uni -a U -q
Character 1: n, Character 2: ó

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X