Supprimer les accents ...

Supprimer les accents ... - Java - Programmation

Marsh Posté le 08-07-2002 à 16:47:14    

Hello,  
 
J'ai une appli web (jsp/servlet) : c'est juste pour le contexte, je crois pas que ca serve pour la solution ...  :sol:  
Donc, j'aimerai pouvoir supprimer les accents (et autres caractères spéciaux propres a notre chère langue).
Exemple : 'è' -> 'e' et 'à' -> 'a' ...
Par contre, je veux pas me taper une hashtable pour faire les conversions ...
Donc je voudrais savoir si il y a un moyen simple de faire.

Reply

Marsh Posté le 08-07-2002 à 16:47:14   

Reply

Marsh Posté le 08-07-2002 à 16:49:09    

chapi456 a écrit a écrit :

Hello,  
 
J'ai une appli web (jsp/servlet) : c'est juste pour le contexte, je crois pas que ca serve pour la solution ...  :sol:  
Donc, j'aimerai pouvoir supprimer les accents (et autres caractères spéciaux propres a notre chère langue).
Exemple : 'è' -> 'e' et 'à' -> 'a' ...
Par contre, je veux pas me taper une hashtable pour faire les conversions ...
Donc je voudrais savoir si il y a un moyen simple de faire.




 
J'vois pas bien ce que viendrait fouttre une Hashtable ici !
C qd même pas bien dur d'énumérer les caractères, et de remplacer untel par un tel...

Reply

Marsh Posté le 08-07-2002 à 16:52:17    

tu veux les remplacer parce que t'arrive pas à les afficher correctement ? Si oui demande a --greg-- il a eu ce genre de prob récemment


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 08-07-2002 à 16:54:31    

DarkLord a écrit a écrit :

tu veux les remplacer parce que t'arrive pas à les afficher correctement ? Si oui demande a --greg-- il a eu ce genre de prob récemment



naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaan
not AGAIN
;(

Reply

Marsh Posté le 08-07-2002 à 16:56:46    

Pour la hashtable : C'etait juste un exemple pour faire la correspondance entre le caractere accentué et le non accentué.
 
Pour darklord : non, c'est pas pour l'affichage, de ce coté comme c'est une appli web, y'a la gestion des caractères unicode qui va bien ... c'est plutot pour faire des recherches :  
 
Exemple : si je lance une recherche sur 'biere', je veux obtenir : 'biere' mais aussi 'Biere' et pis 'bièRe', ...
Pour les cases, c'est bon mais pour les accents, ca gonfle.
Je voulais utiliser les conversions unicodes (un caractère est accentué donc on devrait connaître le caractère de base) mais j'arrive pas à trouver comment faire ca ...
 
De plus, le coup de comparer caractère par caractère, c'est bien gentil mais pas tres efficace ... (c'est ce a quoi servait le contexte, pour justifier d'un besoin de performance ...) !

Reply

Marsh Posté le 08-07-2002 à 16:57:16    

--greg-- a écrit a écrit :

naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaan
not AGAIN
;(




 
tu peux m'en dire plus ...  :D  :D  :D

Reply

Marsh Posté le 08-07-2002 à 17:17:13    

chapi456 a écrit a écrit :

 
 
tu peux m'en dire plus ...  :D  :D  :D  



nan mais j'ai des pb avec mon serveur jsp/Servlets, mysql, les accents et tout ça. :(
 

Reply

Marsh Posté le 08-07-2002 à 17:38:15    

--greg-- a écrit a écrit :

nan mais j'ai des pb avec mon serveur jsp/Servlets, mysql, les accents et tout ça. :(
 
 




Perso, derriere mon serveur, j'ai une base oracle et les accents, pas de problème ...

Reply

Marsh Posté le 08-07-2002 à 17:45:13    

chapi456 a écrit a écrit :

 
Perso, derriere mon serveur, j'ai une base oracle et les accents, pas de problème ...




ben tant mieux pour toi :)
mais ça va pas me convaincre d'utiliser oracle quand j'y suis pas obligé:)

Reply

Marsh Posté le 05-09-2002 à 19:55:25    

bon à tout hasard, personne à un bon truc pour le problème du jeune homme, j'en ai besoin :) [:--greg--]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 05-09-2002 à 19:55:25   

Reply

Marsh Posté le 05-09-2002 à 20:40:45    

--greg-- a écrit a écrit :

bon à tout hasard, personne à un bon truc pour le problème du jeune homme, j'en ai besoin :) [:--greg--]  




 
 
jme disait bine qu il avait été deterré ce topic  :D

Reply

Marsh Posté le 05-09-2002 à 20:47:36    

--greg-- a écrit a écrit :

bon à tout hasard, personne à un bon truc pour le problème du jeune homme, j'en ai besoin :) [:--greg--]  




 
j'ai essayé ca  

Code :
  1. String s = "cédric";
  2.       String sSansAccent = new String(s.getBytes(), "US-ASCII" );
  3.       System.out.println(sSansAccent);


mais ca donne ca

Code :
  1. c?dric

Reply

Marsh Posté le 05-09-2002 à 21:36:30    

et sinon, transcoder(?) une chaine dans un codage non-supporté par defaut par le jdk, y'a moyen? (ibm page 850 en l'occurence, enfin un truc comme ça)
 
edit: enfin, c pas vraiment un encodage mais plutot un character set...
 
edit: http://utopia.knoware.nl/users/epr [...] ge850.html


Message édité par --greg-- le 05-09-2002 à 21:39:52

---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 05-09-2002 à 22:38:00    

Et pourquoi pas bêtement une table de correspondances "à la main" ?
 
D'ailleurs ça a déjà été écrit.

el_gringo a écrit a écrit :

 
C qd même pas bien dur d'énumérer les caractères, et de remplacer untel par un tel...




Bin non, y'en quand même pas des centaines des caractères accentués en français.


Message édité par krosso le 05-09-2002 à 22:39:53
Reply

Marsh Posté le 05-09-2002 à 22:43:08    

krosso a écrit a écrit :

Et pourquoi pas bêtement une table de correspondances "à la main" ?
 
1 D'ailleurs ça a déjà été écrit.
 
2 Bin non, y'en quand même pas des centaines des caractères accentués en français.



1 ou?
2 si tu veux faire l'inverse, c'est autre chose(limiter a une serie de chars et non en 'interdire' quelques uns). et y'a pas que le français dans la vie...


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 05-09-2002 à 22:54:09    

--greg-- a écrit a écrit :

1 ou?
2 si tu veux faire l'inverse, c'est autre chose(limiter a une serie de chars et non en 'interdire' quelques uns). et y'a pas que le français dans la vie...




 
1: je voulais dire ça a déjà été proposé, je n'ai vu la fin du post de el gringo qu'après avoir posté le mien.
 
2. le post initial dit :  
"j'aimerai pouvoir supprimer les accents (et autres caractères spéciaux propres a notre chère langue). "
Faire du générique et de l'international c'est bien, mais dans le cas présent une simple règle "éèêë..." => e suffit.
 
"y'a pas que le français dans la vie..." : I'm quite aware of that ;-)
 

Reply

Marsh Posté le 05-09-2002 à 22:57:36    

krosso a écrit a écrit :

 
 
1: je voulais dire ça a déjà été proposé, je n'ai vu la fin du post de el gringo qu'après avoir posté le mien.
 
2. le post initial dit :  
"j'aimerai pouvoir supprimer les accents (et autres caractères spéciaux propres a notre chère langue). "
Faire du générique et de l'international c'est bien, mais dans le cas présent une simple règle "éèêë..." => e suffit.
 
"y'a pas que le français dans la vie..." : I'm quite aware of that ;-)
 
 



ben oui mais le post initial il est bien bien vieux :) je l'ai remonté parce que ma question avait un rapport... bref mtnt c a MOI qu'il faut répondre :D


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 05-09-2002 à 23:11:43    

--greg-- a écrit a écrit :

ben oui mais le post initial il est bien bien vieux :)



Hola oui, j'avais pas vu. Dsl  :D .
 
C'est tordu ce genre de pbm. Tu peux en dire un peu plus?
 
 

Reply

Marsh Posté le 05-09-2002 à 23:20:25    

pas tout de suite, je suis en train de repasser mon linge [:ddr555]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 05-09-2002 à 23:26:22    

Dans ma boîte précédente on avait eu qlq petits pbm quand on récupérait des chaines de notre base Sybase d'une appli java.
Je ne m'étais pas occupé de ça mais je me rappelle que l'url qu'on passait au pilote jdbc était du style:
bdd.url=jdbc\:sybase\:Tds\:serveur.machin.com\:4101?CHARSET=iso_1&CHARSET_CONVERTER_CLASS\=com.sybase.jdbc2.utils.TruncationConverter.
Le pilote utilisait donc ce filtre.
Et on avait plusieurs classes de conversion de charset. Celle-là selon mon souvenir se contentait de tronquer les char étendus, mais d'autres faisaient de vraies conversions.
Si tu utilises jdbc, ça peut être une piste.
 

Reply

Marsh Posté le 05-09-2002 à 23:39:11    

vi y'a un truc dans le genre avec les drivers jdbc de mysql aussi (j'en ai fait la douloureuse experience), mais là rien à voir...
j'ai une "bete" chaine java avec notamment des accents etc, et je dois la sortir du pc pour un periph qui ne comprend que le code page 850 :/


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 06-09-2002 à 10:15:27    

et si tu fais le bon gros bourrin, en mettant tous les syles d'accents que tu connais ?
ex : str = str.replaceAll("[àáâãäåÀÁÂÃÄÅ]", "a" );

Reply

Marsh Posté le 06-09-2002 à 10:53:36    

c du jdk1.4 ça:/


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 06-09-2002 à 11:35:15    

c'est pas d'une élégance folle, mais ça marche:

Code :
  1. public class TestChar
  2. {
  3. public static void main(String args[])
  4. {
  5.  String test = "bébé août aiguë flèche poëte fît pétée ça";
  6.  System.out.println(test);
  7.  System.out.println(filtre(test));
  8. }
  9. static char[] source = new char[] {'é','è','ë','ê','à','â','ä','î','ï','ô','ö','ü','û','ù','ç'}; //oui, il y en a plein d'autres...
  10. static char[] dest   = new char[] {'e','e','e','e','a','a','a','i','i','o','o','u','u','u','c'};
  11. public static String filtre(String strMot)
  12. {
  13.  char [] mot = strMot.toCharArray();
  14.  StringBuffer buf=new StringBuffer();
  15.  boolean found = false;
  16.  for ( int i=0; i<mot.length ; i++)
  17.  {
  18.   int unicode = (int)(mot[i]);
  19.   if ( unicode>128 && unicode<256) //pour réduire la recherche, valeurs au pif => à déterminer
  20.   {
  21.    found=false;
  22.    for (int j=0; j<source.length && !found; j++)
  23.    {
  24.     if (mot[i] == source[j])
  25.     {
  26.      buf.append(dest[j]);
  27.      found=true;
  28.     }
  29.    }
  30.    if (!found) buf.append(mot[i]);
  31.   }
  32.   else buf.append(mot[i]);
  33.  }
  34.  return buf.toString();
  35. }
  36. }

Reply

Marsh Posté le 06-09-2002 à 11:38:40    

krosso thanks...
je cherchais une méthode un peu plus transparente/standard quoi mais à defaut ça me servira, merci ;)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 06-09-2002 à 11:48:55    

--greg-- a écrit a écrit :

krosso thanks...
je cherchais une méthode un peu plus transparente/standard quoi mais à defaut ça me servira, merci ;)




 
Cette adresse pourra t'être utile pour récupérer les tables:
 
http://free.prohosting.com/~vitiva [...] iCode.html
(d'ailleurs c'est super il propose même des tableaux c/java à copier-coller!!)

Reply

Marsh Posté le 06-09-2002 à 11:51:01    

:jap:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 06-09-2002 à 11:52:21    

ha mais excellent y'a la table cp850 là :D


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed