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 22/07/2015, à 18:00

Arbiel

[Résolu] Remplacer les &#NN; par les diacritiques correspondants

[Edit Voir directement la solution donnée par Bruno au point 9

Bonsoir

Je dispose de textes dans lesquels les caractères spéciaux, avec diacritiques, ont été remplacés par les séquences &#NN;
J'ai besoin de remplacer ces séquences par les caractères spéciaux qu'elles représentent.

Merci d'avance à quiconque voudra bien me venir en aide.

Arbiel

Dernière modification par Arbiel (Le 23/07/2015, à 20:24)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#2 Le 22/07/2015, à 21:38

gigiair

Re : [Résolu] Remplacer les &#NN; par les diacritiques correspondants

Si tu pouvais donner un exemple de texte, je pourrais essayer de le traiter.


--
JJR.

Hors ligne

#3 Le 22/07/2015, à 22:49

Arbiel

Re : [Résolu] Remplacer les &#NN; par les diacritiques correspondants

Bonsoir

Je te remercie de te pencher sur mon problème. Voila un texte

"/home/ciel/ciels_VMs/J'ai trouvé - 1000 façons de grandir/J'ai trouvé - 1000 façons de grandir.Windows 98SE/J'ai trouvé - 1000 façons de grandir.vbox"

Il s'agit de texte extrait d'un document xml, et plus précisément d'une machine virtuelle VirtualBox. Je viens de relire la documentation VirtualBox pour m'apercevoir qu'il existe une commande qui affiche la traduction que je cherche à obtenir.

Mon problème est donc résolu. Cependant, je vais peut-être retrouver un problème analogue dans un autre contexte. Si donc tu veux poursuivre dans la recherche d'une commande qui permet d'aboutir à ce résultat, je reste intéressé.

j'ai essayé echo avec l'option -e aprés avoir adapté le texte, mais cela ne fonctionne pas. De même, iconv ne fait pas ce genre de conversion puisqu'il ne s'agit pas de transcodage.

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#4 Le 22/07/2015, à 23:26

MicP

Re : [Résolu] Remplacer les &#NN; par les diacritiques correspondants

Toujours pareil : Tout dépends du format de la source, de son interprétation par le serveur, de sa ré-interprétation par le client etc.
http://xmlfr.org/documentations/tutoriels/010115-0003

Reste à trouver à quel endroit ces interprétation ré-interprétation etc. ont été faîtes pour essayer régler le problème à la source, sinon, il faudra essayer de re-ré-interpréter (en espérant que le format de la source ne soit pas modifié entre temps)

=======

michel@debG53SW:~$ sed -e 's/\&#xE9;/é/g' -e 's/\&#xE7;/ç/g' <<< "/home/ciel/ciels_VMs/J'ai trouv&#xE9; - 1000 fa&#xE7;ons de grandir/J'ai trouv&#xE9; - 1000 fa&#xE7;ons de grandir.Windows 98SE/J'ai trouv&#xE9; - 1000 fa&#xE7;ons de grandir.vbox"
/home/ciel/ciels_VMs/J'ai trouvé - 1000 façons de grandir/J'ai trouvé - 1000 façons de grandir.Windows 98SE/J'ai trouvé - 1000 façons de grandir.vbox
michel@debG53SW:~$ 

Mais c'est un pis-aller car il faudrait alors créer un script sed pour toutes les entités existantes à traduire.

Dernière modification par MicP (Le 23/07/2015, à 02:16)

Hors ligne

#5 Le 23/07/2015, à 07:35

Hizoka

Re : [Résolu] Remplacer les &#NN; par les diacritiques correspondants

Tiens je ne connaissais pas ces valeurs, on avait ça (non fonctionnel dans ton cas) :

sed 's/&lsquo;\|&#8216;\|%91/‘/g ;
s/&rsquo;\|&#8217;\|%92/’/g ;
s/&sbquo;\|&#8218;\|%82/‚/g ;
s/&ldquo;\|&#8220;\|%93/“/g ;
s/&rdquo;\|&#8221;\|%94/”/g ;
s/&bdquo;\|&#8222;\|%84/„/g ;
s/&dagger;\|&#8224;\|%86/†/g ;
s/&Dagger;\|&#8225;\|%87/‡/g ;
s/&permil;\|&#8240;\|%89/‰/g ;
s/&spades;\|&#9824;/♠/g ;
s/&clubs;\|&#9827;/♣/g ;
s/&hearts;\|&#9829;/♥/g ;
s/&diams;\|&#9830;/♦/g ;
s/&#9674;\|&loz;/◊/g ;
s/&#8971;\|&rfloor;/⌋/g ;
s/&#8970;\|&lfloor;/⌊/g ;
s/&#8969;\|&rceil;/⌉/g ;
s/&#8968;\|&lceil;/⌈/g ;
s/&#8629;\|&crarr;/↵/g ;
s/&#8596;\|&harr;/↔/g ;
s/&#8250;\|&rsaquo;\|%9B/›/g ;
s/&#8249;\|&lsaquo;\|%8B/‹/g ;
s/&#8243;\|&Prime;/″/g ;
s/&#8242;\|&prime;/′/g ;
s/&#732;\|&tilde;\|%98/˜/g ;
s/&#710;\|&circ;\|%88/ˆ/g ;
s/&#982;\|&piv;/ϖ/g ;
s/&#977;\|&thetasym;/ϑ/g ;
s/&#978;\|&upsih;/ϒ/g ;
s/&#913;\|&Alpha;/Α/g ;
s/&#914;\|&Beta;/Β/g ;
s/&#915;\|&Gamma;/Γ/g ;
s/&#916;\|&Delta;/Δ/g ;
s/&#917;\|&Epsilon;/Ε/g ;
s/&#918;\|&Zeta;/Ζ/g ;
s/&#919;\|&Eta;/Η/g ;
s/&#920;\|&Theta;/Θ/g ;
s/&#921;\|&Iota;/Ι/g ;
s/&#922;\|&Kappa;/Κ/g ;
s/&#923;\|&Lambda;/Λ/g ;
s/&#924;\|&Mu;/Μ/g ;
s/&#925;\|&Nu;/Ν/g ;
s/&#926;\|&Xi;/Ξ/g ;
s/&#927;\|&Omicron;/Ο/g ;
s/&#928;\|&Pi;/Π/g ;
s/&#929;\|&Rho;/Ρ/g ;
s/&#931;\|&Sigma;/Σ/g ;
s/&#932;\|&Tau;/Τ/g ;
s/&#933;\|&Upsilon;/Υ/g ;
s/&#934;\|&Phi;/Φ/g ;
s/&#935;\|&Chi;/Χ/g ;
s/&#936;\|&Psi;/Ψ/g ;
s/&#937;\|&Omega;/Ω/g ;
s/&#945;\|&alpha;/α/g ;
s/&#946;\|&beta;/β/g ;
s/&#947;\|&gamma;/γ/g ;
s/&#948;\|&delta;/δ/g ;
s/&#949;\|&epsilon;/ε/g ;
s/&#950;\|&zeta;/ζ/g ;
s/&#951;\|&eta;/η/g ;
s/&#952;\|&theta;/θ/g ;
s/&#953;\|&iota;/ι/g ;
s/&#954;\|&kappa;/κ/g ;
s/&#955;\|&lambda;/λ/g ;
s/&#956;\|&mu;/μ/g ;
s/&#957;\|&nu;/ν/g ;
s/&#958;\|&xi;/ξ/g ;
s/&#959;\|&omicron;/ο/g ;
s/&#960;\|&pi;/π/g ;
s/&#961;\|&rho;/ρ/g ;
s/&#962;\|&sigmaf;/ς/g ;
s/&#963;\|&sigma;/σ/g ;
s/&#964;\|&tau;/τ/g ;
s/&#965;\|&upsilon;/υ/g ;
s/&#966;\|&phi;/φ/g ;
s/&#967;\|&chi;/χ/g ;
s/&#968;\|&psi;/ψ/g ;
s/&#969;\|&omega;/ω/g ;
s/&#8704;\|&forall;/∀/g ;
s/&#8706;\|&part;/∂/g ;
s/&#8707;\|&exist;/∃/g ;
s/&#8709;\|&empty;/∅/g ;
s/&#8711;\|&nabla;/∇/g ;
s/&#8712;\|&isin;/∈/g ;
s/&#8713;\|&notin;/∉/g ;
s/&#8715;\|&ni;/∋/g ;
s/&#8719;\|&prod;/∏/g ;
s/&#8721;\|&sum;/∑/g ;
s/&#8722;\|&minus;/−/g ;
s/&#8727;\|&lowast;/∗/g ;
s/&#8730;\|&radic;/√/g ;
s/&#8733;\|&prop;/∝/g ;
s/&#8734;\|&infin;/∞/g ;
s/&#8736;\|&ang;/∠/g ;
s/&#8743;\|&and;/∧/g ;
s/&#8744;\|&or;/∨/g ;
s/&#8745;\|&cap;/∩/g ;
s/&#8746;\|&cup;/∪/g ;
s/&#8747;\|&int;/∫/g ;
s/&#8756;\|&there4;/∴/g ;
s/&#8764;\|&sim;/∼/g ;
s/&#8773;\|&cong;/≅/g ;
s/&#8776;\|&asymp;/≈/g ;
s/&#8800;\|&ne;/≠/g ;
s/&#8801;\|&equiv;/≡/g ;
s/&#8804;\|&le;/≤/g ;
s/&#8805;\|&ge;/≥/g ;
s/&#8834;\|&sub;/⊂/g ;
s/&#8835;\|&sup;/⊃/g ;
s/&#8836;\|&nsub;/⊄/g ;
s/&#8838;\|&sube;/⊆/g ;
s/&#8839;\|&supe;/⊇/g ;
s/&#8853;\|&oplus;/⊕/g ;
s/&#8855;\|&otimes;/⊗/g ;
s/&#8869;\|&perp;/⊥/g ;
s/&#8901;\|&sdot;/⋅/g ;
s/&oline;\|&#8254;/‾/g ;
s/&larr;\|&#8592;/←/g ;
s/&uarr;\|&#8593;/↑/g ;
s/&rarr;\|&#8594;/→/g ;
s/&darr;\|&#8595;/↓/g ;
s/&#x2122;\|&trade;\|&#8482;\|&#153;\|%99/™/g ;
s/&#33;\|%21/!/g ;
s/&#34;\|&quot;\|%22/"/g ;
s/&#35;\|%23/#/g ;
s/&#36;\|%24/\$/g ;
s/&#37;\|%25/%/g ;
s/&#39;\|&#039;\|%27/'\''/g ;
s/&#40;\|%28/(/g ;
s/&#41;\|%29/)/g ;
s/&#42;\|%2A/*/g ;
s/&#43;\|%2B/+/g ;
s/&#44;\|%2C/,/g ;
s/&#45;\|&#8211;\|%2D/-/g ;
s/&#46;\|%2E/\./g ;
s/&#47;\|&frasl;\|%2F/\//g ;
s/&#58;\|%3A/:/g ;
s/&#59;\|%3B/;/g ;
s/&#60;\|&lt;\|%3C/</g ;
s/&#61;\|%3D/=/g ;
s/&#62;\|&gt;\|%3E/>/g ;
s/&#63;\|%3F/?/g ;
s/&#64;\|%40/@/g ;
s/&#91;\|%5B/[/g ;
s/&#92;\|%5C/\\/g ;
s/&#93;\|%5D/]/g ;
s/&#94;\|%5E/^/g ;
s/&#95;\|%5F/_/g ;
s/&#96;\|%60\|%80/`/g ;
s/&#123;\|%7B/{/g ;
s/&#124;\|%7C/|/g ;
s/&#125;\|%7D/}/g ;
s/&#126;\|%7E/~/g ;
s/&#133;\|&hellip;\|&#8230;\|%85/…/g ;
s/&#150;\|&ndash;\|%96/–/g ;
s/&#151;\|&mdash;\|&#8212;\|%97/—/g ;
s/&#160;\|&nbsp;/ /g ;
s/&#161;\|&iexcl;\|%A1/¡/g ;
s/&#162;\|&cent;\|%A2/¢/g ;
s/&#163;\|&pound;\|%A3/£/g ;
s/&#164;\|&curren;\|%A4/¤/g ;
s/&#165;\|&yen;\|%A5/¥/g ;
s/&#166;\|&brvbar;\|&brkbar;\|%A6/¦/g ;
s/&#167;\|&sect;\|%A7/§/g ;
s/&#168;\|&uml;\|&die;\|%A8/¨/g ;
s/&#169;\|&copy;\|%A9/©/g ;
s/&#170;\|&ordf;\|%AA/ª/g ;
s/&#171;\|&laquo;\|%AB/«/g ;
s/&#172;\|&not;\|%AC/¬/g ;
s/&#174;\|&reg;\|%AE/®/g ;
s/&#175;\|&macr;\|&hibar;\|%AF/¯/g ;
s/&#176;\|&deg;\|%B0/°/g ;
s/&#177;\|&plusmn;\|%B1/±/g ;
s/&#178;\|&sup2;\|%B2/²/g ;
s/&#179;\|&sup3;\|%B3/³/g ;
s/&#180;\|&acute;\|%B4/´/g ;
s/&#181;\|&micro;\|%B5/µ/g ;
s/&#182;\|&para;\|%B6/¶/g ;
s/&#183;\|&middot;\|%B7/·/g ;
s/&#184;\|&cedil;\|%B8/¸/g ;
s/&#185;\|&sup1;\|%B9/¹/g ;
s/&#186;\|&ordm;\|%BA/º/g ;
s/&#187;\|&raquo;\|%BB/»/g ;
s/&#188;\|&frac14;\|%BC/¼/g ;
s/&#189;\|&frac12;\|%BD/½/g ;
s/&#190;\|&frac34;\|%BE/¾/g ;
s/&#191;\|&iquest;\|%BF/¿/g ;
s/&#192;\|&Agrave;\|%C0/À/g ;
s/&#193;\|&Aacute;\|%C1/Á/g ;
s/&#194;\|&Acirc;\|%C2/Â/g ;
s/&#195;\|&Atilde;\|%C3/Ã/g ;
s/&#196;\|&Auml;\|%C4/Ä/g ;
s/&#197;\|&Aring;\|%C5/Å/g ;
s/&#198;\|&AElig;\|%C6/Æ/g ;
s/&#199;\|&Ccedil;\|%C7/Ç/g ;
s/&#200;\|&Egrave;\|%C8/È/g ;
s/&#201;\|&Eacute;\|%C9/É/g ;
s/&#202;\|&Ecirc;\|%CA/Ê/g ;
s/&#203;\|&Euml;\|%CB/Ë/g ;
s/&#204;\|&Igrave;\|%CC/Ì/g ;
s/&#205;\|&Iacute;\|%CD/Í/g ;
s/&#206;\|&Icirc;\|%CE/Î/g ;
s/&#207;\|&Iuml;\|%CF/Ï/g ;
s/&#208;\|&ETH;\|%D0/Ð/g ;
s/&#209;\|&Ntilde;\|%D1/Ñ/g ;
s/&#210;\|&Ograve;\|%D2/Ò/g ;
s/&#211;\|&Oacute;\|%D3/Ó/g ;
s/&#212;\|&Ocirc;\|%D4/Ô/g ;
s/&#213;\|&Otilde;\|%D5/Õ/g ;
s/&#214;\|&Ouml;\|%D6/Ö/g ;
s/&#215;\|&times;\|%D7/×/g ;
s/&#216;\|&Oslash;\|%D8/Ø/g ;
s/&#217;\|&Ugrave;\|%D9/Ù/g ;
s/&#218;\|&Uacute;\|%DA/Ú/g ;
s/&#219;\|&Ucirc;\|%DB/Û/g ;
s/&#220;\|&Uuml;\|%DC/Ü/g ;
s/&#221;\|&Yacute;\|%DD/Ý/g ;
s/&#222;\|&THORN;\|%DE/Þ/g ;
s/&#223;\|&szlig;\|%DF/ß/g ;
s/&#224;\|&agrave;\|%E0/à/g ;
s/&#225;\|&aacute;\|%E1/á/g ;
s/&#226;\|&acirc;\|%E2/â/g ;
s/&#227;\|&atilde;\|%E3/ã/g ;
s/&#228;\|&auml;\|%E4/ä/g ;
s/&#229;\|&aring;\|%E5/å/g ;
s/&#230;\|&aelig;\|%E6/æ/g ;
s/&#231;\|&ccedil;\|%E7/ç/g ;
s/&#232;\|&egrave;\|%E8/è/g ;
s/&#233;\|&eacute;\|%E9/é/g ;
s/&#234;\|&ecirc;\|%EA/ê/g ;
s/&#235;\|&euml;\|%EB/ë/g ;
s/&#236;\|&igrave;\|%EC/ì/g ;
s/&#237;\|&iacute;\|%ED/í/g ;
s/&#238;\|&icirc;\|%EE/î/g ;
s/&#239;\|&iuml;\|%EF/ï/g ;
s/&#240;\|&eth;\|%F0/ð/g ;
s/&#241;\|&ntilde;\|%F1/ñ/g ;
s/&#242;\|&ograve;\|%F2/ò/g ;
s/&#243;\|&oacute;\|%F3/ó/g ;
s/&#244;\|&ocirc;\|%F4/ô/g ;
s/&#245;\|&otilde;\|%F5/õ/g ;
s/&#246;\|&ouml;\|%F6/ö/g ;
s/&#247;\|&divide;\|%F7/÷/g ;
s/&#248;\|&oslash;\|%F8/ø/g ;
s/&#249;\|&ugrave;\|%F9/ù/g ;
s/&#250;\|&uacute;\|%FA/ú/g ;
s/&#251;\|&ucirc;\|%FB/û/g ;
s/&#252;\|&uuml;\|%FC/ü/g ;
s/&#253;\|&yacute;\|%FD/ý/g ;
s/&#254;\|&thorn;\|%FE/þ/g ;
s/&#255;\|&yuml;\|%FF/ÿ/g ;
s/&#9679;/●/g ;
s/&#8226;\|&#8226;\|%95/•/g ;
s/&euro;\|&#8364;/€/g ;
s/&#338;\|&OElig;\|%8C/Œ/g ;
s/&#339;\|&oelig;\|%9C/œ/g ;
s/&#352;\|&Scaron;\|%8A/Š/g ;
s/&#353;\|&scaron;\|%9A/š/g ;
s/&#376;\|&Yuml;\|%9F/Ÿ/g ;
s/&#402;\|&fnof;\|%83/ƒ/g ;
s/&#363;/ū/g ;
s/&#8232;//g ;
s/%9E\|&#382yy;\|&#x17E;\|&#382;/ž/g ;
s/%8F//g ;
s/%8E\|&#381;\|&#x17D;/Ž/g ;
s/%81//g ;
s/%8D//g ;
s/%90//g ;
s/%9D//g ;
s/&#3eeee80;\|&#x17C;\|&#380;/ż/g ;
s/&#37tt9;\|&#x17B;\|&#379;/Ż/g ;
s/&#378;\|&#x17A;/ź/g ;
s/&#377;\|&#x179;/Ź/g ;
s/&#375;\|&#x177;/ŷ/g ;
s/&#374;\|&#x176;/Ŷ/g ;
s/&#7923;\|&#x1EF3;/ỳ/g ;
s/&#7922;\|&#x1EF2;/Ỳ/g ;
s/&#7813;\|&#x1E85;/ẅ/g ;
s/&#7812;\|&#x1E84;/Ẅ/g ;
s/&#373;\|&#x175;/ŵ/g ;
s/&#372;\|&#x174;/Ŵ/g ;
s/&#7811;\|&#x1E83;/ẃ/g ;
s/&#7810;\|&#x1E82;/Ẃ/g ;
s/&#7809;\|&#x1E81;/ẁ/g ;
s/&#7808;\|&#x1E80;/Ẁ/g ;
s/&#369;\|&#x171;/ű/g ;
s/&#368;\|&#x170;/Ű/g ;
s/&#371;\|&#x173;/ų/g ;
s/&#370;\|&#x172;/Ų/g ;
s/&#365;\|&#x16D;/ŭ/g ;
s/&#364;\|&#x16C;/Ŭ/g ;
s/&#362;\|&#x16A;/Ū/g ;
s/&#367;\|&#x16F;/ů/g ;
s/&#256;\|&#x100;/Ā/g ;
s/&#257;\|&#x101;/ā/g ;
s/&#258;\|&#x102;/Ă/g ;
s/&#259;\|&#x103;/ă/g ;
s/&#260;\|&#x104;/Ą/g ;
s/&#261;\|&#x105;/ą/g ;
s/&#478;\|&#x1DE;/Ǟ/g ;
s/&#479;\|&#x1DF;/ǟ/g ;
s/&#506;\|&#x1FA;/Ǻ/g ;
s/&#507;\|&#x1FB;/ǻ/g ;
s/&#508;\|&#x1FC;/Ǽ/g ;
s/&#509;\|&#x1FD;/ǽ/g ;
s/&#7682;\|&#x1E02;/Ḃ/g ;
s/&#7683;\|&#x1E03;/ḃ/g ;
s/&#262;\|&#x106;/Ć/g ;
s/&#263;\|&#x107;/ć/g ;
s/&#268;\|&#x10C;/Č/g ;
s/&#269;\|&#x10D;/č/g ;
s/&#264;\|&#x108;/Ĉ/g ;
s/&#265;\|&#x109;/ĉ/g ;
s/&#266;\|&#x10A;/Ċ/g ;
s/&#267;\|&#x10B;/ċ/g ;
s/&#7696;\|&#x1E10;/Ḑ/g ;
s/&#7697;\|&#x1E11;/ḑ/g ;
s/&#270;\|&#x10E;/Ď/g ;
s/&#271;\|&#x10F;/ď/g ;
s/&#7690;\|&#x1E0A;/Ḋ/g ;
s/&#7691;\|&#x1E0B;/ḋ/g ;
s/&#272;\|&#x110;/Đ/g ;
s/&#273;\|&#x111;/đ/g ;
s/&#499;\|&#x1F3;/dz/g ;
s/&#454;\|&#x1C6;/dž/g ;
s/&#282;\|&#x11A;/Ě/g ;
s/&#283;\|&#x11B;/ě/g ;
s/&#274;\|&#x112;/Ē/g ;
s/&#275;\|&#x113;/ē/g ;
s/&#276;\|&#x114;/Ĕ/g ;
s/&#277;\|&#x115;/ĕ/g ;
s/&#280;\|&#x118;/Ę/g ;
s/&#281;\|&#x119;/ę/g ;
s/&#278;\|&#x116;/Ė/g ;
s/&#279;\|&#x117;/ė/g ;
s/&#439;\|&#x1B7;/Ʒ/g ;
s/&#658;\|&#x292;/ʒ/g ;
s/&#494;\|&#x1EE;/Ǯ/g ;
s/&#495;\|&#x1EF;/ǯ/g ;
s/&#7710;\|&#x1E1E;/Ḟ/g ;
s/&#7711;\|&#x1E1F;/ḟ/g ;
s/&#64256;\|&#xFB00;/ff/g ;
s/&#64257;\|&#xFB01;/fi/g ;
s/&#64258;\|&#xFB02;/fl/g ;
s/&#64259;\|&#xFB03;/ffi/g ;
s/&#64260;\|&#xFB04;/ffl/g ;
s/&#64261;\|&#xFB05;/ſt/g ;
s/&#500;\|&#x1F4;/Ǵ/g ;
s/&#501;\|&#x1F5;/ǵ/g ;
s/&#290;\|&#x122;/Ģ/g ;
s/&#291;\|&#x123;/ģ/g ;
s/&#486;\|&#x1E6;/Ǧ/g ;
s/&#487;\|&#x1E7;/ǧ/g ;
s/&#284;\|&#x11C;/Ĝ/g ;
s/&#285;\|&#x11D;/ĝ/g ;
s/&#286;\|&#x11E;/Ğ/g ;
s/&#287;\|&#x11F;/ğ/g ;
s/&#288;\|&#x120;/Ġ/g ;
s/&#289;\|&#x121;/ġ/g ;
s/&#484;\|&#x1E4;/Ǥ/g ;
s/&#485;\|&#x1E5;/ǥ/g ;
s/&#292;\|&#x124;/Ĥ/g ;
s/&#293;\|&#x125;/ĥ/g ;
s/&#294;\|&#x126;/Ħ/g ;
s/&#295;\|&#x127;/ħ/g ;
s/&#296;\|&#x128;/Ĩ/g ;
s/&#297;\|&#x129;/ĩ/g ;
s/&#298;\|&#x12A;/Ī/g ;
s/&#299;\|&#x12B;/ī/g ;
s/&#300;\|&#x12C;/Ĭ/g ;
s/&#301;\|&#x12D;/ĭ/g ;
s/&#302;\|&#x12E;/Į/g ;
s/&#303;\|&#x12F;/į/g ;
s/&#304;\|&#x130;/İ/g ;
s/&#305;\|&#x131;/ı/g ;
s/&#306;\|&#x132;/IJ/g ;
s/&#307;\|&#x133;/ij/g ;
s/&#308;\|&#x134;/Ĵ/g ;
s/&#309;\|&#x135;/ĵ/g ;
s/&#7728;\|&#x1E30;/Ḱ/g ;
s/&#7729;\|&#x1E31;/ḱ/g ;
s/&#310;\|&#x136;/Ķ/g ;
s/&#311;\|&#x137;/ķ/g ;
s/&#488;\|&#x1E8;/Ǩ/g ;
s/&#489;\|&#x1E9;/ǩ/g ;
s/&#312;\|&#x138;/ĸ/g ;
s/&#313;\|&#x139;/Ĺ/g ;
s/&#314;\|&#x13A;/ĺ/g ;
s/&#315;\|&#x13B;/Ļ/g ;
s/&#316;\|&#x13C;/ļ/g ;
s/&#317;\|&#x13D;/Ľ/g ;
s/&#318;\|&#x13E;/ľ/g ;
s/&#319;\|&#x13F;/Ŀ/g ;
s/&#320;\|&#x140;/ŀ/g ;
s/&#321;\|&#x141;/Ł/g ;
s/&#322;\|&#x142;/ł/g ;
s/&#457;\|&#x1C9;/lj/g ;
s/&#7744;\|&#x1E40;/Ṁ/g ;
s/&#7745;\|&#x1E41;/ṁ/g ;
s/&#323;\|&#x143;/Ń/g ;
s/&#324;\|&#x144;/ń/g ;
s/&#325;\|&#x145;/Ņ/g ;
s/&#326;\|&#x146;/ņ/g ;
s/&#327;\|&#x147;/Ň/g ;
s/&#328;\|&#x148;/ň/g ;
s/&#329;\|&#x149;/ʼn/g ;
s/&#330;\|&#x14A;/Ŋ/g ;
s/&#331;\|&#x14B;/ŋ/g ;
s/&#460;\|&#x1CC;/nj/g ;
s/&#332;\|&#x14C;/Ō/g ;
s/&#333;\|&#x14D;/ō/g ;
s/&#334;\|&#x14E;/Ŏ/g ;
s/&#335;\|&#x14F;/ŏ/g ;
s/&#336;\|&#x150;/Ő/g ;
s/&#337;\|&#x151;/ő/g ;
s/&#510;\|&#x1FE;/Ǿ/g ;
s/&#511;\|&#x1FF;/ǿ/g ;
s/&#7766;\|&#x1E56;/Ṗ/g ;
s/&#7767;\|&#x1E57;/ṗ/g ;
s/&#340;\|&#x154;/Ŕ/g ;
s/&#341;\|&#x155;/ŕ/g ;
s/&#342;\|&#x156;/Ŗ/g ;
s/&#343;\|&#x157;/ŗ/g ;
s/&#344;\|&#x158;/Ř/g ;
s/&#345;\|&#x159;/ř/g ;
s/&#636;\|&#x27C;/ɼ/g ;
s/&#346;\|&#x15A;/Ś/g ;
s/&#347;\|&#x15B;/ś/g ;
s/&#350;\|&#x15E;/Ş/g ;
s/&#351;\|&#x15F;/ş/g ;
s/&#348;\|&#x15C;/Ŝ/g ;
s/&#349;\|&#x15D;/ŝ/g ;
s/&#7776;\|&#x1E60;/Ṡ/g ;
s/&#7777;\|&#x1E61;/ṡ/g ;
s/&#383;\|&#x17F;/ſ/g ;
s/&#354;\|&#x162;/Ţ/g ;
s/&#355;\|&#x163;/ţ/g ;
s/&#356;\|&#x164;/Ť/g ;
s/&#357;\|&#x165;/ť/g ;
s/&#7786;\|&#x1E6A;/Ṫ/g ;
s/&#7787;\|&#x1E6B;/ṫ/g ;
s/&#358;\|&#x166;/Ŧ/g ;
s/&#359;\|&#x167;/ŧ/g ;
s/&#360;\|&#x168;/Ũ/g ;
s/&#361;\|&#x169;/ũ/g ;
s/&#366;\|&#x16E;/Ů/g ;
s/&#8208;/‐/g ;
s/&#8209;/‑/g ;
s/&#8210;/‒/g ;
s/&#8213;/―/g ;
s/&#8214;/‖/g ;
s/&#8215;/‗/g ;
s/&#8219;/‛/g ;
s/&#8223;/‟/g ;
s/&#8227;/‣/g ;
s/&#8228;/․/g ;
s/&#8229;/‥/g ;
s/&#8231;/‧/g ;
s/&#8241;/‱/g ;
s/&#8244;/‴/g ;
s/&#8245;/‵/g ;
s/&#8246;/‶/g ;
s/&#8247;/‷/g ;
s/&#8248;/‸/g ;
s/&#8251;/※/g ;
s/&#8252;/‼/g ;
s/&#8253;/‽/g ;
s/&#8256;/⁀/g ;
s/&#8257;/⁁/g ;
s/&#8258;/⁂/g ;
s/&#8259;/⁃/g ;
s/&#8260;/⁄/g ;
s/&#8261;/⁅/g ;
s/&#8262;/⁆/g ;
s/&#8263;/⁇/g ;
s/&#8264;/⁈/g ;
s/&#8265;/⁉/g ;
s/&#8266;/⁊/g ;
s/&#8267;/⁋/g ;
s/&#8268;/⁌/g ;
s/&#8269;/⁍/g ;
s/&#8270;/⁎/g ;
s/&#8271;/⁏/g ;
s/&#8272;/⁐/g ;
s/&#8273;/⁑/g ;
s/&#8274;/⁒/g ;
s/&#8275;/⁓/g ;
s/&#8276;/⁔/g ;
s/&#8277;/⁕/g ;
s/&#8278;/⁖/g ;
s/&#8279;/⁗/g ;
s/&#8280;/⁘/g ;
s/&#8281;/⁙/g ;
s/&#8282;/⁚/g ;
s/&#8283;/⁛/g ;
s/&#8284;/⁜/g ;
s/&#8285;/⁝/g ;
s/&#8286;/⁞/g ;
s/&#8292;/⁤/g ;
s/&#8293;/⁥/g ;
s/&#8294;/⁦/g ;
s/&#8295;/⁧/g ;
s/&#8296;/⁨/g ;
s/&#8297;/⁩/g ;
s/&#8304;/⁰/g ;
s/&#8305;/ⁱ/g ;
s/&#8306;/⁲/g ;
s/&#8307;/⁳/g ;
s/&#8308;/⁴/g ;
s/&#8309;/⁵/g ;
s/&#8310;/⁶/g ;
s/&#8311;/⁷/g ;
s/&#8312;/⁸/g ;
s/&#8313;/⁹/g ;
s/&#8314;/⁺/g ;
s/&#8315;/⁻/g ;
s/&#8316;/⁼/g ;
s/&#8317;/⁽/g ;
s/&#8318;/⁾/g ;
s/&#8319;/ⁿ/g ;
s/&#8320;/₀/g ;
s/&#8321;/₁/g ;
s/&#8322;/₂/g ;
s/&#8323;/₃/g ;
s/&#8324;/₄/g ;
s/&#8325;/₅/g ;
s/&#8326;/₆/g ;
s/&#8327;/₇/g ;
s/&#8328;/₈/g ;
s/&#8329;/₉/g ;
s/&#8330;/₊/g ;
s/&#8331;/₋/g ;
s/&#8332;/₌/g ;
s/&#8333;/₍/g ;
s/&#8334;/₎/g ;
s/&#8335;/₏/g ;
s/&#8336;/ₐ/g ;
s/&#8337;/ₑ/g ;
s/&#8338;/ₒ/g ;
s/&#8339;/ₓ/g ;
s/&#8340;/ₔ/g ;
s/&#8341;/ₕ/g ;
s/&#8342;/ₖ/g ;
s/&#8343;/ₗ/g ;
s/&#8344;/ₘ/g ;
s/&#8345;/ₙ/g ;
s/&#8346;/ₚ/g ;
s/&#8347;/ₛ/g ;
s/&#8348;/ₜ/g ;
s/&#8349;/₝/g ;
s/&#8350;/₞/g ;
s/&#8351;/₟/g ;
s/&#8352;/₠/g ;
s/&#8353;/₡/g ;
s/&#8354;/₢/g ;
s/&#8355;/₣/g ;
s/&#8356;/₤/g ;
s/&#8357;/₥/g ;
s/&#8358;/₦/g ;
s/&#8359;/₧/g ;
s/&#8360;/₨/g ;
s/&#8361;/₩/g ;
s/&#8362;/₪/g ;
s/&#8363;/₫/g ;
s/&#8365;/₭/g ;
s/&#38;\|&amp;\|%26/\&/g'

Il faut essayé de faire un truc dans le même genre mais  c'est assez long...

Sinon comme le dit MicP, il vaut mieux connaitre les encodages...

Tu peux t'inspirer de ma fonction :

function CODAGE
{
FUSHIA="\033[1;35m"
RAZ="\e[m"
BLEUFONCE="\033[1;34m"
VERT="\033[0;32m"
ROUGE="\033[1;31m"

cd "${PWD}"

# Liste des encodages les plus courants
CODES_LIST="iso-8859-1 cp437 iso-8859-2 iso-8859-3 iso-8859-4 iso-8859-5 iso-8859-6 iso-8859-7 iso-8859-8 iso-8859-9 iso-8859-10 iso-8859-11 iso-8859-13 iso-8859-14 iso-8859-15 iso-8859-16 cp737 cp775 cp850 cp852 cp855 cp856 cp857 cp860 cp861 cp862 cp863 cp864 cp865 cp866 cp869 cp874 cp932 cp936 cp949 cp950 cp1250 cp1251 cp1252 cp1253 cp1254 cp1255 cp1256 cp1257 cp1258"


### Intro ###

# Vérification de l'existence de convmv
if [[ -z $(dpkg -l | egrep "^ii  convmv") ]]
then
    echo -e "${BLEUFONCE}Installation de convmv.\n${RAZ}"
    sudo apt-get -y --force-yes install convmv
fi

# Pour boucler sur tous les codepages supportés par convmv, il faut mettre ALLCODES en argument
[[ "${option}" = "ALLCODES" ]] && CODES_LIST=$(convmv --list | tr '\n' ' ')


# Demande de l'utilisation de la récursivité
echo
read -p "Voulez-vous agir de façon recursive (modification des sous dossiers) ? [O]ui [N]on [E]xit : "

case ${REPLY} in
    [Ee]*) echo -e "\n${ROUGE}Arret du script.${RAZ}\n" ; return ;;
    [Oo]*) OPTION_R="-r" ;;
esac


### Boucle principale ###

for CODAGE in ${CODES_LIST}
do
    echo -e "\n${BLEU}Hypothèse du codage : ${FUSHIA}${CODAGE}${RAZ}"

    # Recher des fichiers n'etant pas en UTF-8
    LISTE_FICHIER=$(convmv -f ${CODAGE} -t utf-8 ${OPTION_R} * 2>&1 | egrep "^mv ")

    # Vérifie qu'il y ait bien des fichiers à renommer
    if [[ -z ${LISTE_FICHIER} ]]
    then
        echo -e "\n${ROUGE}Aucun nom de fichier à convertir.${RAZ}\n"
        return

    else
        # Nombre de fichier à renommer
        NOMBRE_FICHIERS=$(echo "${LISTE_FICHIER}" | wc -l)
        echo -e "\n${FUSHIA}${NOMBRE_FICHIERS}${RAZ} fichiers à convertir."
    fi

    for ((i=1; i<=${NOMBRE_FICHIERS}; i++))
    do
        LIGNE=$(sed -n ${i}p <<< "${LISTE_FICHIER}")

        # Récupération du nom corrompu
        ANCIEN_NOM=$(cut -f2 -d '"' <<< "${LIGNE}")

        # Récupération du nom corrigé
        NOUVEAU_NOM=$(cut -f4 -d '"' <<< "${LIGNE}")

        echo -n -e "\n${VERT}Convertion de ${RAZ}"

        for (( x=0 ; x <= ${#ANCIEN_NOM} ; x++ ))
        do
            LETTRE_ORIGINALE=${ANCIEN_NOM:${x}:1}
            LETTRE_CORRIGEE=${NOUVEAU_NOM:${x}:1}

            # Comparaison des caracteres entre eux
            if [[ "${LETTRE_ORIGINALE}" == "${LETTRE_CORRIGEE}" ]]
            then
                echo -n -e "${LETTRE_ORIGINALE}"
            else
                echo -n -e "${BLEU}${LETTRE_ORIGINALE}${RAZ}"
            fi
        done

        echo -n -e "${VERT} en ${RAZ}"

        for (( x=0 ; x <= ${#ANCIEN_NOM} ; x++ ))
        do
            LETTRE_ORIGINALE=${ANCIEN_NOM:${x}:1}
            LETTRE_CORRIGEE=${NOUVEAU_NOM:${x}:1}

            # Comparaison des caracteres entre eux
            if [[ "${LETTRE_ORIGINALE}" == "${LETTRE_CORRIGEE}" ]]
            then
                echo -n -e "${LETTRE_CORRIGEE}"
            else
                echo -n -e "${FUSHIA}${LETTRE_CORRIGEE}${RAZ}"
            fi
        done

    done

    # Demande de confirmation du codage à utiliser
    echo -e "\n"
    read -p "Ce codage est-il le bon ? [O]ui [N]on [E]xit : " BON_CODAGE

    if [[ ${BON_CODAGE} == [Ee]* ]]
    then
        echo -e "\n${ROUGE}Arret du script.${RAZ}\n"
        return

    elif [[ ${BON_CODAGE} == [OoYy]* ]]
    then
        convmv -f ${CODAGE} -t utf-8 ${OPTION_R} * --notest &>/dev/null

        # Vérification de l'abscence de fichier corrompu
        if [[ -z $(convmv -f ${CODAGE} -t utf-8 ${OPTION_R} * 2>&1 | egrep "^mv ") ]]
        then
            echo -e "\n${BLEU}Tous les fichiers ont été renommés.${RAZ}\n"
            return

        else
            echo -e "\n${ROUGE}Tous les fichiers n'ont pas été renommés.${RAZ}\n"
            return
        fi
    fi

    # Mise au propre du terminal
    clear
done
}

https://forum.ubuntu-fr.org/viewtopic.php?id=347517

Il permet justement de corriger les noms des fichiers d'un dossier (récursif ou non) en proposant différents encodages et en montrant le résultat.

A toi de trouver ta soluce avec tout ça et oublie pas de la poster wink

Dernière modification par Hizoka (Le 23/07/2015, à 07:40)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#6 Le 23/07/2015, à 13:43

serged

Re : [Résolu] Remplacer les &#NN; par les diacritiques correspondants

Y'a pas un programme qui fait ça tout fait ? C'est un codage plus ou moins standard des caractères Unicode donc ça devrait déjà exister...


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#7 Le 23/07/2015, à 15:10

Arbiel

Re : [Résolu] Remplacer les &#NN; par les diacritiques correspondants

Bonjour

Je pensais initialement comme serged qu'il devrait bien exister un programme pour faire ce que je cherche à réaliser.

À défaut, j'ai un peu avancé avec echo et sed

remi@remi-Vostro-3550:~$ echo -e $(sed -e "s/'/~/g" -e "s/\&#\(x[0-9|a-f|A-F][0-9|a-f|A-F]\);/\\\\\1/g" <<<"/home/ciel/ciels_VMs/J'ai trouv&#xE9; - 1000 fa&#xE7;ons de grandir/J'ai trouv&#xE9; - 1000 fa&#xE7;ons de grandir.Windows 98SE/J'ai trouv&#xE9; - 1000 fa&#xE7;ons de grandir.vbox")
/home/ciel/ciels_VMs/J~ai trouv - 1000 faons de grandir/J~ai trouv - 1000 faons de grandir.Windows 98SE/J~ai trouv - 1000 faons de grandir.vbox
remi@remi-Vostro-3550:~$ 

Un petit transcodage avec iconv (mais lequel ?) et le retour à des ' à la place des ~ devrait permettre d'aboutir.

Commentaires : dans la commande de substitution, je n'ai pas pu introduire la classe [:xdigit:], ni la répétition {2}
Je viens de constater que les "hiéroglyphes" qui apparaissent sur le terminal ont disparu dans ma recopie

Arbiel

Dernière modification par Arbiel (Le 23/07/2015, à 15:14)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#8 Le 23/07/2015, à 17:18

gigiair

Re : [Résolu] Remplacer les &#NN; par les diacritiques correspondants

Personnellement, je ferais ça avec Emacs. Il suffit de faire une recherche et remplacement de regexp
"&#x\\([1-9A-F][0-9A-F]\\);" par l'évaluation  elisp de (string (string-to-number \1 16)) (soit "\,(string (string-to-number \11 16)"  )
On peut taper C-M-%  &#x\([1-9A-F][0-9A-F]\); <RET> \,(string(string-to-number \1 16)) <RET>
Valider les remplacements un à un, ou taper ! pour traiter tout le document.

Ça ne doit pas être trop difficile d'écrire une ligne en bash, j'imagine, mais comme je n'aime pas trop ça, je laisse aux amateurs le soin de le faire.

Dernière modification par gigiair (Le 23/07/2015, à 17:20)


--
JJR.

Hors ligne

#9 Le 23/07/2015, à 17:51

bruno

Re : [Résolu] Remplacer les &#NN; par les diacritiques correspondants

Bonjour,

recode doit pouvoir faire cela. En tout cas je l'ai déjà utilisé dans l'autre sens : conversion de diacritiques vers des entités HTML.

Dans ton cas :

recode XML-standalone nom_du_fichier_a_reencoder

Hors ligne

#10 Le 23/07/2015, à 18:05

gigiair

Re : [Résolu] Remplacer les &#NN; par les diacritiques correspondants

Exact, j'ai testé. J'avais cherché dans cette direction, mais je n'avais pas vu.


--
JJR.

Hors ligne

#11 Le 23/07/2015, à 20:20

Arbiel

Re : [Résolu] Remplacer les &#NN; par les diacritiques correspondants

Bonsoir

Effectivement, cela marche parfaitement.

Merci beaucoup

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#12 Le 26/07/2015, à 10:21

gigiair

Re : [Résolu] Remplacer les &#NN; par les diacritiques correspondants

Comme j'ai parfois des problèmes de ce genre, j'ai rajouté dans mon init.el (Emacs)

(add-to-list 'format-alist     `(xml ,(purecopy "XML entités numériques")
	   nil
	   ,(purecopy "recode -f h0..utf-8")
	   ,(purecopy "recode -f ..h0") t nil))

Maintenant quand j'ai des codes de ce type, la commande M-x format-decode-buffer me propose xml qui fait le truc.


--
JJR.

Hors ligne