Manipuler des caractères diacritiques [Java] - Java - Programmation
Marsh Posté le 07-01-2004 à 18:52:00
ben pour récupérer ton caractère tu fais juste taString.charAt(lIndexDeTonCaractere);
Ca te retourne un char. (Les chars java sont des caractère unicodes).
Pour récupérer le code de ce caractère, tu as juste à le cast en int :
int code = (int) tonChar;
J'ai répondu à la question ?
Marsh Posté le 07-01-2004 à 22:43:41
benou a écrit : ben pour récupérer ton caractère tu fais juste taString.charAt(lIndexDeTonCaractere); |
heu ça dépend...
oui si ((int) 'a' = int 'à') par exemple
non sinon
le but est de supprimer tous les caractères diacritiques dans une chaine et de les remplacer par le caractère ASCII associé
é -> e
è -> e
à -> a
etc...
Marsh Posté le 07-01-2004 à 23:25:18
ha ok ...
bon ben ca non, ca existe pas. enfin je pense pas ...
Marsh Posté le 07-01-2004 à 23:56:06
c'est bien ce qui me fait peur...
pourtant si Java est capablke de comparer 'à' et 'a' (dans le package java.text) je comprend pas qu'il puisse pas passer du premier au second.
surtout que si j'ai bien compris, Java utilise UTF-8 pour encoder Unicode, et du coup, le premier octet représente le caractère non accentué, et le second l'accent...
bon j'ai une solution de rechange, mais avouez que passer par PostgreSQL pour délester une chaine Java de ses accents, c'est méga sioux !
Marsh Posté le 08-01-2004 à 00:01:52
Predicator a écrit : surtout que si j'ai bien compris, Java utilise UTF-8 pour encoder Unicode, et du coup, le premier octet représente le caractère non accentué, et le second l'accent... |
ben dans ce cas là avec un petit ET binaire tu t'en sors
Marsh Posté le 08-01-2004 à 00:37:26
Predicator a écrit : |
non²
-java utilise UTF-32 pour encoder unicode (aka un glyphe tjrs sur 4 octets) ce qui est != d'UTF-8 ou un glyphe est encodé sur un nombre variable d'octets variant de 1 à 6.
-et non ça ne se goupille pas comme ça en UTF-8 pour certains glyphes accentués tel que le é
Marsh Posté le 08-01-2004 à 07:41:50
ratai, c'est UTF-16.
edit : pour éviter tout contestation :
http://java.sun.com/docs/books/jls [...] .html#9151
Marsh Posté le 08-01-2004 à 08:04:57
OK merci pour ces précisions
mais on m'enlèvera pas de l'idée que si Java sait comparer 'à' et 'a', alors il sait passer du premier au second, et ne pas permettre de le faire, c'est chelou
Marsh Posté le 08-01-2004 à 08:10:11
Predicator a écrit : UTF-8 pour encoder Unicode, et du coup, le premier octet représente le caractère non accentué, et le second l'accent... |
oulà, pas du tout, fait gaffe à ne pa partir sur ce genre d'idées.
petit extrait de la RFC 2279 :
Citation : |
En gros ce qu'on en retient c'est que le nombre de 1 en tête du premier octet donne le nombre d'octets qu'il reste à lire pour le caractère courant.
Pour UTF-16 ça semble être un bordel monstre et différent, mais je suis pas sûr, j'ai trouvé aucun document clair.
Marsh Posté le 08-01-2004 à 08:15:16
Predicator a écrit : OK merci pour ces précisions |
ben fais ta table de convertion. Tiens, je vais le faire, ça me fait tripper ce truc.
Marsh Posté le 08-01-2004 à 08:21:51
Predicator a écrit : OK merci pour ces précisions |
c'est où dans le package java.text ? je trouve pas le collator kivabien.
Marsh Posté le 08-01-2004 à 08:23:07
nraynaud a écrit : oulà, pas du tout, fait gaffe à ne pa partir sur ce genre d'idées.
En gros ce qu'on en retient c'est que le nombre de 1 en tête du premier octet donne le nombre d'octets qu'il reste à lire pour le caractère courant. |
alors j'ai du dire une boulette et ça doit être UTF-16 qui peut marcher comme ça
j'ai un collègue qui travaille sur ce genre de chose, et il m'a expliqué que pour un même codage (UTF-16 donc, j'ai du me tromper), il y avait aussi les 2 méthodes, à savoir :
- codage du caractère et son symbole diacritique
- codage du caractère sur un octet et son symbole diacrtique sur l'octet suivant
les deux peuvent être mélangés, et en gros j'ai pas essayé de comprendre exactement comment ça marchait
Marsh Posté le 08-01-2004 à 08:26:28
nraynaud a écrit : c'est où dans le package java.text ? je trouve pas le collator kivabien. |
comme ça à brûle pourpoint je sais plus, mais c'est un Collator qui te permet de choisir le niveau de comparaison de 2 chaînes :
- primaire : ni accent ni casse ne comptent
- secondaire : insensible à la casse
- tertiaire : sensible aux accents et à la casse
Marsh Posté le 08-01-2004 à 08:32:12
Predicator a écrit : |
Ok, je vois, j'ai pas regardé ces collators, ils avaient un nom qui me plaisait pas.
http://java.sun.com/j2se/1.4.2/doc [...] #SECONDARY
je vais voir ça.
Marsh Posté le 07-01-2004 à 16:20:25
Salut
J'ai cherché un peu partout dans l'API Java une classe qui permet de récupérer des caractères ASCII depuis une String avec des caractères diacritiques dedans... La seule chose que j'ai trouvé (dans java.text), c'est la possibilité de comparer des caractères diacritiques avec des caractères ASCII, mais aucune possibilité de passer du premier au second
Vous connaissez un moyen de faire ça ? Merci