#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, GNOME 3.36.8
24.04 en cours de tests
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, GNOME 3.36.8
24.04 en cours de tests
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/\é/é/g' -e 's/\ç/ç/g' <<< "/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"
/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/‘\|‘\|%91/‘/g ;
s/’\|’\|%92/’/g ;
s/‚\|‚\|%82/‚/g ;
s/“\|“\|%93/“/g ;
s/”\|”\|%94/”/g ;
s/„\|„\|%84/„/g ;
s/†\|†\|%86/†/g ;
s/‡\|‡\|%87/‡/g ;
s/‰\|‰\|%89/‰/g ;
s/♠\|♠/♠/g ;
s/♣\|♣/♣/g ;
s/♥\|♥/♥/g ;
s/♦\|♦/♦/g ;
s/◊\|◊/◊/g ;
s/⌋\|⌋/⌋/g ;
s/⌊\|⌊/⌊/g ;
s/⌉\|⌉/⌉/g ;
s/⌈\|⌈/⌈/g ;
s/↵\|↵/↵/g ;
s/↔\|↔/↔/g ;
s/›\|›\|%9B/›/g ;
s/‹\|‹\|%8B/‹/g ;
s/″\|″/″/g ;
s/′\|′/′/g ;
s/˜\|˜\|%98/˜/g ;
s/ˆ\|ˆ\|%88/ˆ/g ;
s/ϖ\|ϖ/ϖ/g ;
s/ϑ\|ϑ/ϑ/g ;
s/ϒ\|ϒ/ϒ/g ;
s/Α\|Α/Α/g ;
s/Β\|Β/Β/g ;
s/Γ\|Γ/Γ/g ;
s/Δ\|Δ/Δ/g ;
s/Ε\|Ε/Ε/g ;
s/Ζ\|Ζ/Ζ/g ;
s/Η\|Η/Η/g ;
s/Θ\|Θ/Θ/g ;
s/Ι\|Ι/Ι/g ;
s/Κ\|Κ/Κ/g ;
s/Λ\|Λ/Λ/g ;
s/Μ\|Μ/Μ/g ;
s/Ν\|Ν/Ν/g ;
s/Ξ\|Ξ/Ξ/g ;
s/Ο\|Ο/Ο/g ;
s/Π\|Π/Π/g ;
s/Ρ\|Ρ/Ρ/g ;
s/Σ\|Σ/Σ/g ;
s/Τ\|Τ/Τ/g ;
s/Υ\|Υ/Υ/g ;
s/Φ\|Φ/Φ/g ;
s/Χ\|Χ/Χ/g ;
s/Ψ\|Ψ/Ψ/g ;
s/Ω\|Ω/Ω/g ;
s/α\|α/α/g ;
s/β\|β/β/g ;
s/γ\|γ/γ/g ;
s/δ\|δ/δ/g ;
s/ε\|ε/ε/g ;
s/ζ\|ζ/ζ/g ;
s/η\|η/η/g ;
s/θ\|θ/θ/g ;
s/ι\|ι/ι/g ;
s/κ\|κ/κ/g ;
s/λ\|λ/λ/g ;
s/μ\|μ/μ/g ;
s/ν\|ν/ν/g ;
s/ξ\|ξ/ξ/g ;
s/ο\|ο/ο/g ;
s/π\|π/π/g ;
s/ρ\|ρ/ρ/g ;
s/ς\|ς/ς/g ;
s/σ\|σ/σ/g ;
s/τ\|τ/τ/g ;
s/υ\|υ/υ/g ;
s/φ\|φ/φ/g ;
s/χ\|χ/χ/g ;
s/ψ\|ψ/ψ/g ;
s/ω\|ω/ω/g ;
s/∀\|∀/∀/g ;
s/∂\|∂/∂/g ;
s/∃\|∃/∃/g ;
s/∅\|∅/∅/g ;
s/∇\|∇/∇/g ;
s/∈\|∈/∈/g ;
s/∉\|∉/∉/g ;
s/∋\|∋/∋/g ;
s/∏\|∏/∏/g ;
s/∑\|∑/∑/g ;
s/−\|−/−/g ;
s/∗\|∗/∗/g ;
s/√\|√/√/g ;
s/∝\|∝/∝/g ;
s/∞\|∞/∞/g ;
s/∠\|∠/∠/g ;
s/∧\|∧/∧/g ;
s/∨\|∨/∨/g ;
s/∩\|∩/∩/g ;
s/∪\|∪/∪/g ;
s/∫\|∫/∫/g ;
s/∴\|∴/∴/g ;
s/∼\|∼/∼/g ;
s/≅\|≅/≅/g ;
s/≈\|≈/≈/g ;
s/≠\|≠/≠/g ;
s/≡\|≡/≡/g ;
s/≤\|≤/≤/g ;
s/≥\|≥/≥/g ;
s/⊂\|⊂/⊂/g ;
s/⊃\|⊃/⊃/g ;
s/⊄\|⊄/⊄/g ;
s/⊆\|⊆/⊆/g ;
s/⊇\|⊇/⊇/g ;
s/⊕\|⊕/⊕/g ;
s/⊗\|⊗/⊗/g ;
s/⊥\|⊥/⊥/g ;
s/⋅\|⋅/⋅/g ;
s/‾\|‾/‾/g ;
s/←\|←/←/g ;
s/↑\|↑/↑/g ;
s/→\|→/→/g ;
s/↓\|↓/↓/g ;
s/™\|™\|™\|™\|%99/™/g ;
s/!\|%21/!/g ;
s/"\|"\|%22/"/g ;
s/#\|%23/#/g ;
s/$\|%24/\$/g ;
s/%\|%25/%/g ;
s/'\|'\|%27/'\''/g ;
s/(\|%28/(/g ;
s/)\|%29/)/g ;
s/*\|%2A/*/g ;
s/+\|%2B/+/g ;
s/,\|%2C/,/g ;
s/-\|–\|%2D/-/g ;
s/.\|%2E/\./g ;
s//\|⁄\|%2F/\//g ;
s/:\|%3A/:/g ;
s/;\|%3B/;/g ;
s/<\|<\|%3C/</g ;
s/=\|%3D/=/g ;
s/>\|>\|%3E/>/g ;
s/?\|%3F/?/g ;
s/@\|%40/@/g ;
s/[\|%5B/[/g ;
s/\\|%5C/\\/g ;
s/]\|%5D/]/g ;
s/^\|%5E/^/g ;
s/_\|%5F/_/g ;
s/`\|%60\|%80/`/g ;
s/{\|%7B/{/g ;
s/|\|%7C/|/g ;
s/}\|%7D/}/g ;
s/~\|%7E/~/g ;
s/…\|…\|…\|%85/…/g ;
s/–\|–\|%96/–/g ;
s/—\|—\|—\|%97/—/g ;
s/ \| / /g ;
s/¡\|¡\|%A1/¡/g ;
s/¢\|¢\|%A2/¢/g ;
s/£\|£\|%A3/£/g ;
s/¤\|¤\|%A4/¤/g ;
s/¥\|¥\|%A5/¥/g ;
s/¦\|¦\|&brkbar;\|%A6/¦/g ;
s/§\|§\|%A7/§/g ;
s/¨\|¨\|¨\|%A8/¨/g ;
s/©\|©\|%A9/©/g ;
s/ª\|ª\|%AA/ª/g ;
s/«\|«\|%AB/«/g ;
s/¬\|¬\|%AC/¬/g ;
s/®\|®\|%AE/®/g ;
s/¯\|¯\|&hibar;\|%AF/¯/g ;
s/°\|°\|%B0/°/g ;
s/±\|±\|%B1/±/g ;
s/²\|²\|%B2/²/g ;
s/³\|³\|%B3/³/g ;
s/´\|´\|%B4/´/g ;
s/µ\|µ\|%B5/µ/g ;
s/¶\|¶\|%B6/¶/g ;
s/·\|·\|%B7/·/g ;
s/¸\|¸\|%B8/¸/g ;
s/¹\|¹\|%B9/¹/g ;
s/º\|º\|%BA/º/g ;
s/»\|»\|%BB/»/g ;
s/¼\|¼\|%BC/¼/g ;
s/½\|½\|%BD/½/g ;
s/¾\|¾\|%BE/¾/g ;
s/¿\|¿\|%BF/¿/g ;
s/À\|À\|%C0/À/g ;
s/Á\|Á\|%C1/Á/g ;
s/Â\|Â\|%C2/Â/g ;
s/Ã\|Ã\|%C3/Ã/g ;
s/Ä\|Ä\|%C4/Ä/g ;
s/Å\|Å\|%C5/Å/g ;
s/Æ\|Æ\|%C6/Æ/g ;
s/Ç\|Ç\|%C7/Ç/g ;
s/È\|È\|%C8/È/g ;
s/É\|É\|%C9/É/g ;
s/Ê\|Ê\|%CA/Ê/g ;
s/Ë\|Ë\|%CB/Ë/g ;
s/Ì\|Ì\|%CC/Ì/g ;
s/Í\|Í\|%CD/Í/g ;
s/Î\|Î\|%CE/Î/g ;
s/Ï\|Ï\|%CF/Ï/g ;
s/Ð\|Ð\|%D0/Ð/g ;
s/Ñ\|Ñ\|%D1/Ñ/g ;
s/Ò\|Ò\|%D2/Ò/g ;
s/Ó\|Ó\|%D3/Ó/g ;
s/Ô\|Ô\|%D4/Ô/g ;
s/Õ\|Õ\|%D5/Õ/g ;
s/Ö\|Ö\|%D6/Ö/g ;
s/×\|×\|%D7/×/g ;
s/Ø\|Ø\|%D8/Ø/g ;
s/Ù\|Ù\|%D9/Ù/g ;
s/Ú\|Ú\|%DA/Ú/g ;
s/Û\|Û\|%DB/Û/g ;
s/Ü\|Ü\|%DC/Ü/g ;
s/Ý\|Ý\|%DD/Ý/g ;
s/Þ\|Þ\|%DE/Þ/g ;
s/ß\|ß\|%DF/ß/g ;
s/à\|à\|%E0/à/g ;
s/á\|á\|%E1/á/g ;
s/â\|â\|%E2/â/g ;
s/ã\|ã\|%E3/ã/g ;
s/ä\|ä\|%E4/ä/g ;
s/å\|å\|%E5/å/g ;
s/æ\|æ\|%E6/æ/g ;
s/ç\|ç\|%E7/ç/g ;
s/è\|è\|%E8/è/g ;
s/é\|é\|%E9/é/g ;
s/ê\|ê\|%EA/ê/g ;
s/ë\|ë\|%EB/ë/g ;
s/ì\|ì\|%EC/ì/g ;
s/í\|í\|%ED/í/g ;
s/î\|î\|%EE/î/g ;
s/ï\|ï\|%EF/ï/g ;
s/ð\|ð\|%F0/ð/g ;
s/ñ\|ñ\|%F1/ñ/g ;
s/ò\|ò\|%F2/ò/g ;
s/ó\|ó\|%F3/ó/g ;
s/ô\|ô\|%F4/ô/g ;
s/õ\|õ\|%F5/õ/g ;
s/ö\|ö\|%F6/ö/g ;
s/÷\|÷\|%F7/÷/g ;
s/ø\|ø\|%F8/ø/g ;
s/ù\|ù\|%F9/ù/g ;
s/ú\|ú\|%FA/ú/g ;
s/û\|û\|%FB/û/g ;
s/ü\|ü\|%FC/ü/g ;
s/ý\|ý\|%FD/ý/g ;
s/þ\|þ\|%FE/þ/g ;
s/ÿ\|ÿ\|%FF/ÿ/g ;
s/●/●/g ;
s/•\|•\|%95/•/g ;
s/€\|€/€/g ;
s/Œ\|Œ\|%8C/Œ/g ;
s/œ\|œ\|%9C/œ/g ;
s/Š\|Š\|%8A/Š/g ;
s/š\|š\|%9A/š/g ;
s/Ÿ\|Ÿ\|%9F/Ÿ/g ;
s/ƒ\|ƒ\|%83/ƒ/g ;
s/ū/ū/g ;
s/
//g ;
s/%9E\|žyy;\|ž\|ž/ž/g ;
s/%8F//g ;
s/%8E\|Ž\|Ž/Ž/g ;
s/%81//g ;
s/%8D//g ;
s/%90//g ;
s/%9D//g ;
s/eeee80;\|ż\|ż/ż/g ;
s/%tt9;\|Ż\|Ż/Ż/g ;
s/ź\|ź/ź/g ;
s/Ź\|Ź/Ź/g ;
s/ŷ\|ŷ/ŷ/g ;
s/Ŷ\|Ŷ/Ŷ/g ;
s/ỳ\|ỳ/ỳ/g ;
s/Ỳ\|Ỳ/Ỳ/g ;
s/ẅ\|ẅ/ẅ/g ;
s/Ẅ\|Ẅ/Ẅ/g ;
s/ŵ\|ŵ/ŵ/g ;
s/Ŵ\|Ŵ/Ŵ/g ;
s/ẃ\|ẃ/ẃ/g ;
s/Ẃ\|Ẃ/Ẃ/g ;
s/ẁ\|ẁ/ẁ/g ;
s/Ẁ\|Ẁ/Ẁ/g ;
s/ű\|ű/ű/g ;
s/Ű\|Ű/Ű/g ;
s/ų\|ų/ų/g ;
s/Ų\|Ų/Ų/g ;
s/ŭ\|ŭ/ŭ/g ;
s/Ŭ\|Ŭ/Ŭ/g ;
s/Ū\|Ū/Ū/g ;
s/ů\|ů/ů/g ;
s/Ā\|Ā/Ā/g ;
s/ā\|ā/ā/g ;
s/Ă\|Ă/Ă/g ;
s/ă\|ă/ă/g ;
s/Ą\|Ą/Ą/g ;
s/ą\|ą/ą/g ;
s/Ǟ\|Ǟ/Ǟ/g ;
s/ǟ\|ǟ/ǟ/g ;
s/Ǻ\|Ǻ/Ǻ/g ;
s/ǻ\|ǻ/ǻ/g ;
s/Ǽ\|Ǽ/Ǽ/g ;
s/ǽ\|ǽ/ǽ/g ;
s/Ḃ\|Ḃ/Ḃ/g ;
s/ḃ\|ḃ/ḃ/g ;
s/Ć\|Ć/Ć/g ;
s/ć\|ć/ć/g ;
s/Č\|Č/Č/g ;
s/č\|č/č/g ;
s/Ĉ\|Ĉ/Ĉ/g ;
s/ĉ\|ĉ/ĉ/g ;
s/Ċ\|Ċ/Ċ/g ;
s/ċ\|ċ/ċ/g ;
s/Ḑ\|Ḑ/Ḑ/g ;
s/ḑ\|ḑ/ḑ/g ;
s/Ď\|Ď/Ď/g ;
s/ď\|ď/ď/g ;
s/Ḋ\|Ḋ/Ḋ/g ;
s/ḋ\|ḋ/ḋ/g ;
s/Đ\|Đ/Đ/g ;
s/đ\|đ/đ/g ;
s/dz\|dz/dz/g ;
s/dž\|dž/dž/g ;
s/Ě\|Ě/Ě/g ;
s/ě\|ě/ě/g ;
s/Ē\|Ē/Ē/g ;
s/ē\|ē/ē/g ;
s/Ĕ\|Ĕ/Ĕ/g ;
s/ĕ\|ĕ/ĕ/g ;
s/Ę\|Ę/Ę/g ;
s/ę\|ę/ę/g ;
s/Ė\|Ė/Ė/g ;
s/ė\|ė/ė/g ;
s/Ʒ\|Ʒ/Ʒ/g ;
s/ʒ\|ʒ/ʒ/g ;
s/Ǯ\|Ǯ/Ǯ/g ;
s/ǯ\|ǯ/ǯ/g ;
s/Ḟ\|Ḟ/Ḟ/g ;
s/ḟ\|ḟ/ḟ/g ;
s/ff\|ff/ff/g ;
s/fi\|fi/fi/g ;
s/fl\|fl/fl/g ;
s/ffi\|ffi/ffi/g ;
s/ffl\|ffl/ffl/g ;
s/ſt\|ſt/ſt/g ;
s/Ǵ\|Ǵ/Ǵ/g ;
s/ǵ\|ǵ/ǵ/g ;
s/Ģ\|Ģ/Ģ/g ;
s/ģ\|ģ/ģ/g ;
s/Ǧ\|Ǧ/Ǧ/g ;
s/ǧ\|ǧ/ǧ/g ;
s/Ĝ\|Ĝ/Ĝ/g ;
s/ĝ\|ĝ/ĝ/g ;
s/Ğ\|Ğ/Ğ/g ;
s/ğ\|ğ/ğ/g ;
s/Ġ\|Ġ/Ġ/g ;
s/ġ\|ġ/ġ/g ;
s/Ǥ\|Ǥ/Ǥ/g ;
s/ǥ\|ǥ/ǥ/g ;
s/Ĥ\|Ĥ/Ĥ/g ;
s/ĥ\|ĥ/ĥ/g ;
s/Ħ\|Ħ/Ħ/g ;
s/ħ\|ħ/ħ/g ;
s/Ĩ\|Ĩ/Ĩ/g ;
s/ĩ\|ĩ/ĩ/g ;
s/Ī\|Ī/Ī/g ;
s/ī\|ī/ī/g ;
s/Ĭ\|Ĭ/Ĭ/g ;
s/ĭ\|ĭ/ĭ/g ;
s/Į\|Į/Į/g ;
s/į\|į/į/g ;
s/İ\|İ/İ/g ;
s/ı\|ı/ı/g ;
s/IJ\|IJ/IJ/g ;
s/ij\|ij/ij/g ;
s/Ĵ\|Ĵ/Ĵ/g ;
s/ĵ\|ĵ/ĵ/g ;
s/Ḱ\|Ḱ/Ḱ/g ;
s/ḱ\|ḱ/ḱ/g ;
s/Ķ\|Ķ/Ķ/g ;
s/ķ\|ķ/ķ/g ;
s/Ǩ\|Ǩ/Ǩ/g ;
s/ǩ\|ǩ/ǩ/g ;
s/ĸ\|ĸ/ĸ/g ;
s/Ĺ\|Ĺ/Ĺ/g ;
s/ĺ\|ĺ/ĺ/g ;
s/Ļ\|Ļ/Ļ/g ;
s/ļ\|ļ/ļ/g ;
s/Ľ\|Ľ/Ľ/g ;
s/ľ\|ľ/ľ/g ;
s/Ŀ\|Ŀ/Ŀ/g ;
s/ŀ\|ŀ/ŀ/g ;
s/Ł\|Ł/Ł/g ;
s/ł\|ł/ł/g ;
s/lj\|lj/lj/g ;
s/Ṁ\|Ṁ/Ṁ/g ;
s/ṁ\|ṁ/ṁ/g ;
s/Ń\|Ń/Ń/g ;
s/ń\|ń/ń/g ;
s/Ņ\|Ņ/Ņ/g ;
s/ņ\|ņ/ņ/g ;
s/Ň\|Ň/Ň/g ;
s/ň\|ň/ň/g ;
s/ʼn\|ʼn/ʼn/g ;
s/Ŋ\|Ŋ/Ŋ/g ;
s/ŋ\|ŋ/ŋ/g ;
s/nj\|nj/nj/g ;
s/Ō\|Ō/Ō/g ;
s/ō\|ō/ō/g ;
s/Ŏ\|Ŏ/Ŏ/g ;
s/ŏ\|ŏ/ŏ/g ;
s/Ő\|Ő/Ő/g ;
s/ő\|ő/ő/g ;
s/Ǿ\|Ǿ/Ǿ/g ;
s/ǿ\|ǿ/ǿ/g ;
s/Ṗ\|Ṗ/Ṗ/g ;
s/ṗ\|ṗ/ṗ/g ;
s/Ŕ\|Ŕ/Ŕ/g ;
s/ŕ\|ŕ/ŕ/g ;
s/Ŗ\|Ŗ/Ŗ/g ;
s/ŗ\|ŗ/ŗ/g ;
s/Ř\|Ř/Ř/g ;
s/ř\|ř/ř/g ;
s/ɼ\|ɼ/ɼ/g ;
s/Ś\|Ś/Ś/g ;
s/ś\|ś/ś/g ;
s/Ş\|Ş/Ş/g ;
s/ş\|ş/ş/g ;
s/Ŝ\|Ŝ/Ŝ/g ;
s/ŝ\|ŝ/ŝ/g ;
s/Ṡ\|Ṡ/Ṡ/g ;
s/ṡ\|ṡ/ṡ/g ;
s/ſ\|ſ/ſ/g ;
s/Ţ\|Ţ/Ţ/g ;
s/ţ\|ţ/ţ/g ;
s/Ť\|Ť/Ť/g ;
s/ť\|ť/ť/g ;
s/Ṫ\|Ṫ/Ṫ/g ;
s/ṫ\|ṫ/ṫ/g ;
s/Ŧ\|Ŧ/Ŧ/g ;
s/ŧ\|ŧ/ŧ/g ;
s/Ũ\|Ũ/Ũ/g ;
s/ũ\|ũ/ũ/g ;
s/Ů\|Ů/Ů/g ;
s/‐/‐/g ;
s/‑/‑/g ;
s/‒/‒/g ;
s/―/―/g ;
s/‖/‖/g ;
s/‗/‗/g ;
s/‛/‛/g ;
s/‟/‟/g ;
s/‣/‣/g ;
s/․/․/g ;
s/‥/‥/g ;
s/‧/‧/g ;
s/‱/‱/g ;
s/‴/‴/g ;
s/‵/‵/g ;
s/‶/‶/g ;
s/‷/‷/g ;
s/‸/‸/g ;
s/※/※/g ;
s/‼/‼/g ;
s/‽/‽/g ;
s/⁀/⁀/g ;
s/⁁/⁁/g ;
s/⁂/⁂/g ;
s/⁃/⁃/g ;
s/⁄/⁄/g ;
s/⁅/⁅/g ;
s/⁆/⁆/g ;
s/⁇/⁇/g ;
s/⁈/⁈/g ;
s/⁉/⁉/g ;
s/⁊/⁊/g ;
s/⁋/⁋/g ;
s/⁌/⁌/g ;
s/⁍/⁍/g ;
s/⁎/⁎/g ;
s/⁏/⁏/g ;
s/⁐/⁐/g ;
s/⁑/⁑/g ;
s/⁒/⁒/g ;
s/⁓/⁓/g ;
s/⁔/⁔/g ;
s/⁕/⁕/g ;
s/⁖/⁖/g ;
s/⁗/⁗/g ;
s/⁘/⁘/g ;
s/⁙/⁙/g ;
s/⁚/⁚/g ;
s/⁛/⁛/g ;
s/⁜/⁜/g ;
s/⁝/⁝/g ;
s/⁞/⁞/g ;
s/⁤//g ;
s/⁥//g ;
s/⁦//g ;
s/⁧//g ;
s/⁨//g ;
s/⁩//g ;
s/⁰/⁰/g ;
s/ⁱ/ⁱ/g ;
s/⁲//g ;
s/⁳//g ;
s/⁴/⁴/g ;
s/⁵/⁵/g ;
s/⁶/⁶/g ;
s/⁷/⁷/g ;
s/⁸/⁸/g ;
s/⁹/⁹/g ;
s/⁺/⁺/g ;
s/⁻/⁻/g ;
s/⁼/⁼/g ;
s/⁽/⁽/g ;
s/⁾/⁾/g ;
s/ⁿ/ⁿ/g ;
s/₀/₀/g ;
s/₁/₁/g ;
s/₂/₂/g ;
s/₃/₃/g ;
s/₄/₄/g ;
s/₅/₅/g ;
s/₆/₆/g ;
s/₇/₇/g ;
s/₈/₈/g ;
s/₉/₉/g ;
s/₊/₊/g ;
s/₋/₋/g ;
s/₌/₌/g ;
s/₍/₍/g ;
s/₎/₎/g ;
s/₏//g ;
s/ₐ/ₐ/g ;
s/ₑ/ₑ/g ;
s/ₒ/ₒ/g ;
s/ₓ/ₓ/g ;
s/ₔ/ₔ/g ;
s/ₕ/ₕ/g ;
s/ₖ/ₖ/g ;
s/ₗ/ₗ/g ;
s/ₘ/ₘ/g ;
s/ₙ/ₙ/g ;
s/ₚ/ₚ/g ;
s/ₛ/ₛ/g ;
s/ₜ/ₜ/g ;
s/₝//g ;
s/₞//g ;
s/₟//g ;
s/₠/₠/g ;
s/₡/₡/g ;
s/₢/₢/g ;
s/₣/₣/g ;
s/₤/₤/g ;
s/₥/₥/g ;
s/₦/₦/g ;
s/₧/₧/g ;
s/₨/₨/g ;
s/₩/₩/g ;
s/₪/₪/g ;
s/₫/₫/g ;
s/₭/₭/g ;
s/&\|&\|%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
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é - 1000 façons de grandir/J'ai trouvé - 1000 façons de grandir.Windows 98SE/J'ai trouvé - 1000 faç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, GNOME 3.36.8
24.04 en cours de tests
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
#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, GNOME 3.36.8
24.04 en cours de tests
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