Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/06/2010, à 19:39

TheCaméléon

[Résolu x2] Problème d'encodage de caractères

Bonjour,

J'ai encore un problème avec le même script, mais ce coup-ci c'est pour des caractères spéciaux. En fait je récupère des adresses de fichier depuis la base de  donnée avec rhythmbox, mais le problème est qu'ils sont encodés en je ne sais quoi et que je voudrais les convertir en normal (utf-8 normal).

Ils sont encodés comme dans les url des pages internet (%20 pour espace etc). Le problème principal est que je ne sais pas à quel encodage ça  correspond (iso, unicode, hexadecimal???).

Quel est donc cet encodage ?

Merci d'avance
TheCaméléon

Dernière modification par TheCaméléon (Le 29/06/2010, à 18:16)

Hors ligne

#2 Le 21/06/2010, à 19:54

skingrapher

Re : [Résolu x2] Problème d'encodage de caractères

salut,

L'encodage est en hexadécimal.

XX d'une expression %XX dans une URL représente un caractère hexadécimal.

Dernière modification par skingrapher (Le 21/06/2010, à 19:56)


Je suis un obsédé textuel. J'aime trop le LaTeX.

Hors ligne

#3 Le 21/06/2010, à 21:47

TheCaméléon

Re : [Résolu x2] Problème d'encodage de caractères

ok
Et comment peut-on indiquer à un logiciel comme iconv que le texte d'entrée est en hexadécimal (enfin les caractères spéciaux seulement) pour qu'il le convertisse en utf-8 "normal" ?

Hors ligne

#4 Le 21/06/2010, à 21:58

Link31

Re : [Résolu x2] Problème d'encodage de caractères

echo "h%E9h%E9%2C+%E7a+marche+!" | perl -pe "s/\%([A-Fa-f0-9]{2})/pack('C', hex(\$1))/eg;s/\+/ /sg"

Hors ligne

#5 Le 21/06/2010, à 22:55

gilbert

Re : [Résolu x2] Problème d'encodage de caractères

Link31 a écrit :
echo "h%E9h%E9%2C+%E7a+marche+!" | perl -pe "s/\%([A-Fa-f0-9]{2})/pack('C', hex(\$1))/eg;s/\+/ /sg"

Presque.. Ton exemple est mal choisi le point d'exclamation est interprété par le shell...


$ echo "h%E9h%E9%2C+%E7a+marche+!" | perl -pe "s/\%([A-Fa-f0-9]{2})/pack('C', hex(\$1))/eg;s/\+/ /sg"
bash: !": event not found

Il devrait commencer par protéger les caractères spéciaux par des backslash... C'est un peu gênant non ?


Simplement moi-même..

Hors ligne

#6 Le 21/06/2010, à 23:08

grim7reaper

Re : [Résolu x2] Problème d'encodage de caractères

Bah, tu remplaces les doubles quotes du echo par des simples et ça suffit, non ?

Hors ligne

#7 Le 21/06/2010, à 23:29

Link31

Re : [Résolu x2] Problème d'encodage de caractères

gilbert a écrit :

Presque.. Ton exemple est mal choisi le point d'exclamation est interprété par le shell...

C'est le genre de fonctionnalité stupide et inutile que je désactive immédiatement dans mes shells interactifs.

Cela dit, ça n'empêche absolument pas l'utilisation du caractère "!" dans un script.

Hors ligne

#8 Le 22/06/2010, à 12:43

TheCaméléon

Re : [Résolu x2] Problème d'encodage de caractères

Merci big_smile

Mon script marche à merveille smile

Hors ligne

#9 Le 28/06/2010, à 19:33

TheCaméléon

Re : [Résolu x2] Problème d'encodage de caractères

Re !

J'ai encore un problème d'encodage big_smile
Cette fois c'est pour récupérer des paroles de chansons depuis TuneWiki. Mais pour embêter les développeurs imaginatifs, ils ont encodé toutes les paroles.
Je crois que c'est du codage html (ascii?). En gros tout navigateur internet l'interprète normalement, mais pas bash :S

En gros ça donne ça :

&amp;#89;&amp;#111;&amp;#117;&amp;#110;&amp;#103; &amp;#77;&amp;#97;&amp;#110;, &amp;#84;&amp;#104;&amp;#101;&amp;#114;&amp;#101;'&amp;#115; &amp;#78;&amp;#111; &amp;#78;&amp;#101;&amp;#101;&amp;#100; &amp;#84;&amp;#111; &amp;#70;&amp;#101;&amp;#101;&amp;#108; &amp;#68;&amp;#111;&amp;#119;&amp;#110;<br />&amp;#73; &amp;#83;&amp;#97;&amp;#105;&amp;#100;, &amp;#89;&amp;#111;&amp;#117;&amp;#110;&amp;#103; &amp;#77;&amp;#97;&amp;#110;, &amp;#80;&amp;#105;&amp;#99;&amp;#107; &amp;#89;&amp;#111;&amp;#117;&amp;#114;&amp;#115;&amp;#101;&amp;#108;&amp;#102; &amp;#79;&amp;#102;&amp;#102; &amp;#84;&amp;#104;&amp;#101; &amp;#71;&amp;#114;&amp;#111;&amp;#117;&amp;#110;&amp;#100;<br />&amp;#73; &amp;#83;&amp;#97;&amp;#105;&amp;#100;, &amp;#89;&amp;#111;&amp;#117;&amp;#110;&amp;#103; &amp;#77;&amp;#97;&amp;#110;, '&amp;#99;&amp;#97;&amp;#117;&amp;#115;&amp;#101; &amp;#89;&amp;#111;&amp;#117;&amp;#114; &amp;#73;&amp;#110; A &amp;#78;&amp;#101;&amp;#119; &amp;#84;&amp;#111;&amp;#119;&amp;#110;<br />&amp;#84;&amp;#104;&amp;#101;&amp;#114;&amp;#101;'&amp;#115; &amp;#78;&amp;#111; &amp;#78;&amp;#101;&amp;#101;&amp;#100; &amp;#84;&amp;#111; &amp;#66;&amp;#101; &amp;#85;&amp;#110;&amp;#104;&amp;#97;&amp;#112;&amp;#112;&amp;#121;<br />&amp;#89;&amp;#111;&amp;#117;&amp;#110;&amp;#103; &amp;#77;&amp;#97;&amp;#110;, &amp;#84;&amp;#104;&amp;#101;&amp;#114;&amp;#101;'&amp;#115; A &amp;#80;&amp;#108;&amp;#97;&amp;#99;&amp;#101; &amp;#89;&amp;#111;&amp;#117; &amp;#67;&amp;#97;&amp;#110; &amp;#71;&amp;#111;<br />&amp;#73; &amp;#83;&amp;#97;&amp;#105;&amp;#100;, &amp;#89;&amp;#111;&amp;#117;&amp;#110;&amp;#103; &amp;#77;&amp;#97;&amp;#110;, &amp;#87;&amp;#104;&amp;#101;&amp;#110; &amp;#89;&amp;#111;&amp;#117;'&amp;#114;&amp;#101; &amp;#83;&amp;#104;&amp;#111;&amp;#114;&amp;#116; &amp;#79;&amp;#110; &amp;#89;&amp;#111;&amp;#117;&amp;#114; &amp;#68;&amp;#111;&amp;#117;&amp;#103;&amp;#104;<br />&amp;#89;&amp;#111;&amp;#117; &amp;#67;&amp;#97;&amp;#110; &amp;#83;&amp;#116;&amp;#97;&amp;#121; &amp;#84;&amp;#104;&amp;#101;&amp;#114;&amp;#101;, A&amp;#110;&amp;#100; &amp;#73;'&amp;#77; &amp;#83;&amp;#117;&amp;#114;&amp;#101; &amp;#89;&amp;#111;&amp;#117; &amp;#87;&amp;#105;&amp;#108;&amp;#108; &amp;#70;&amp;#105;&amp;#110;&amp;#100;

Et je voudrais le convertir (avec bash) en texte "normal" que tous les monde peut lire big_smile

Merci d'avance !

PS ; excusez-moi mais comme les navigateurs interprètent automatiquement le texte, j'ai mis des "&amp;" au lieu des "&".
Les trucs qui posent problèmes sont les "&CHIFFRES;"

Dernière modification par TheCaméléon (Le 28/06/2010, à 19:37)

Hors ligne

#10 Le 28/06/2010, à 20:16

grim7reaper

Re : [Résolu x2] Problème d'encodage de caractères

En Perl (nécessite le module HTML::Entities, je ne sais plus s'il est installé par défaut).

echo ' &amp;#87;&amp;#105;&amp;#108;&amp;#108; &amp;#70;&amp;#105;&amp;#110;&amp;#100;' | perl -MHTML::Entities -pe 'decode_entities($_)'

J'ai fait comme toi : &amp; correspond à &

Dernière modification par grim7reaper (Le 28/06/2010, à 20:27)

Hors ligne

#11 Le 29/06/2010, à 17:57

TheCaméléon

Re : [Résolu x2] Problème d'encodage de caractères

Merci 1000fois !

Réflexion faite, http://search.mp3lyrics.org/ est plus complet que TuneWiki, mais ils utilisent le même encodage, donc parfait big_smile
Visiblement, HTML::Entitiese est installé par défaut (pratique tongue)

Hors ligne