Le 16/12/2013 15:50, Une Bévue a écrit :
> Le 16/12/13 12:10, Olivier Miakinen a écrit :
>> Essaye d'ajouter ceci à ta liste :
>> r = r.replace(new RegExp(/\u0300/g),"");
>
> je n'ai pas pu tester, mon exemple ne comportant pas d'accent grave.
Ok, j'aurais pu te proposer \u0301 pour les accents aigus, mais j'avais
supposé que les accents graves étaient plus intéressants puisqu'en
français on en a sur plus de lettres (à, è, ù). De toute manière, si
l'exemple complet fonctionne c'est parfait.
>> Si cela vire bien les accents graves, il est probable que ceci devrait
>> retirer tous les accents :
>> r = r.replace(new RegExp(/[\u0300-\u036f]/g),"");
>
> bon, là j'ai testé, sur les exemples que j'avais, je dois dire que je ne
> sais ni d'où ça vient, ces caractères décomposés, ni comment en
> fabriquer à volonté.
Tiens, cadeau : <
http://hapax.qc.ca/conversion.fr.html>.
Tu saisis E9 dans le cadre en haut à gauche pour avoir un é en
précomposé dans celui en haut à droite ; 65 301 pour un é en
décomposé (en principe, ça doit être le cas dans cette phrase).
> Bon, mon test donne :
> $ ./unaccent-test2.js
> source = 'Gelée de thé'
> source.unaccent() = 'gelée de thé'
> source.replace(...) = 'Gelee de the'
> source = 'Confiture pëches brugnons'
> source.unaccent() = 'confiture pëches brugnons'
C'est un poëte, celui qui mange des pëches... ;-)
> source.replace(...) = 'Confiture peches brugnons'
> source = 'Gelée pommes cassis'
> source.unaccent() = 'gelée pommes cassis'
> source.replace(...) = 'Gelee pommes cassis'
> source = 'photocopie livre de Lenôtre'
> source.unaccent() = 'photocopie livre de lenotre'
> source.replace(...) = 'photocopie livre de Lenôtre'
>
> alors source : les caractères en entrée, source.unaccent() : les
> caractères moulinés par mon script et enfin source.replace(...) : les
> caractères filtrés par ta Regex.
>
> Conclusion : j'ai un mélange des deux types (?).
Oui, donc ce n'est pas un texte en forme canonique du tout puisqu'il
y a un mélange des deux.
> => d'ajouter ta regex à mon script, malheureusement elle ne peut pas
> remplacer, avantageusement les n lignes de mon script.
Normal. Ma regexp n'est *que* pour les formes décomposées, les tiennes
ne sont *que* pour les formes précomposées. Note que conserver les deux
permet de gérer aussi les mélanges de formes C et D, par exemple ce
superbe c cédille accent-aigu ḉ composé d'un ç suivi d'un accent.
>>> >donc, question, en js y a t'il un moyen pour passer d'UTF-8-MAC à UTF-8
>>> >tout court ?
>> Appelons les choses par leur nom. Tu veux passer d'une forme de
>> normalisation décomposée (NFD ou NFKD) en une forme de normalisation
>> composée (NFC ou NFKC). C'est sans doute possible, mais pour ce qui
>> est de supprimer les accents la forme décomposée est quand même plus
>> simple, cf. supra.
>
> OUI, c'est sûr, mais enfin, avec ruby où j'ai du trouver un workaround
> car la conversion UTF-8MAC <-> UTF-8 ne marche pas (?),
é précomposé vers é décomposé :
r = r.replace(new RegExp(/\u00E9/g),"e\u0300");
é décomposé vers é précomposé :
r = r.replace(new RegExp(/e\u0300/g),"\u00E9");
(à adapter en ruby, ou chercher une bibliothèque qui fasse ça pour tous
les caractères d'un coup)
> j'ai une exemple
> concret, un petit script qui me renomme et déplace les "Capture
> d'écran..." (avec un é décomposé donc) ben même après une tentative de
> conversion UTF-8MAC -> UTF-8 je ne suis pas parvenu à faire une regex
> dessus (je prends la date pour en changer le format et la mettre en tête
> du nom de fichier).
> J'ai donc modifié, je ne sais plus comment, une option de ScreenCapture
> pour avoir "Capture ecran..." (donc sans é ni ' qui gène aussi)
>
> Avec ruby c'est un peu le bronx, le globing fonctionne bien, mais pas
> les regex, dans le cas de caractères décomposés.
Il n'y a pas un groupe de discussions sur usenet-fr pour parler de ruby ?