[Jsp, Taglib] Caracteres speciaux dans les chaines

Caracteres speciaux dans les chaines [Jsp, Taglib] - Java - Programmation

Marsh Posté le 30-07-2002 à 15:12:24    

Est-ce que quelqu'un sait si il existe quelque part dans une
bibliotheque une fonction qui transformerait des Strings avec
de magnifiques caracteres accentues en quelque chose de plus
"HTML compliant" ? Par exemple, "é" deviendrait "eacute".  
Merci beaucoup d'avance.

Reply

Marsh Posté le 30-07-2002 à 15:12:24   

Reply

Marsh Posté le 30-07-2002 à 15:15:41    

exo_ a écrit a écrit :

Est-ce que quelqu'un sait si il existe quelque part dans une
bibliotheque une fonction qui transformerait des Strings avec
de magnifiques caracteres accentues en quelque chose de plus
"HTML compliant" ? Par exemple, "é" deviendrait "eacute".  
Merci beaucoup d'avance.




moi j'ai une classe utlitaire qui me fait ca ... codée à la main ...

Reply

Marsh Posté le 30-07-2002 à 15:22:39    

benou a écrit a écrit :

 
moi j'ai une classe utlitaire qui me fait ca ... codée à la main ...




 
Ah oui mais si je peux eviter de reinveter la roue, je prefere...
D'autant plus que ce n'est pas vraiment passionnant a faire.
Enfin bon si tu veux bien poster ton code, je n'y vois pas
d'inconvenient :)

Reply

Marsh Posté le 30-07-2002 à 15:42:23    

exo_ a écrit a écrit :

 
 
Ah oui mais si je peux eviter de reinveter la roue, je prefere...
D'autant plus que ce n'est pas vraiment passionnant a faire.
Enfin bon si tu veux bien poster ton code, je n'y vois pas
d'inconvenient :)




 
Enfin c'est pas non pas un travail d'Hercule ... si ?
Non paske y en a pas des tonnes des caractères spéciaux ...
Mais bon c'est vrai que si c'est déjà fait ...

Reply

Marsh Posté le 30-07-2002 à 23:21:38    

bobuse a écrit a écrit :

 
 
Enfin c'est pas non pas un travail d'Hercule ... si ?
Non paske y en a pas des tonnes des caractères spéciaux ...
Mais bon c'est vrai que si c'est déjà fait ...




y en a quand même quelqu'uns ... je te file ca demain au boulot (up si j'oublie)

Reply

Marsh Posté le 31-07-2002 à 10:19:49    

Code :
  1. public static String encodeHTML(String text) {
  2. if (text == null) return null;
  3. StringBuffer buffer = new StringBuffer();
  4. int i=0;
  5. char c;
  6. boolean firstSpace = true; // indique si un espace a déja été encodé
  7. while (i < text.length()) {    
  8.     c = text.charAt(i++);
  9.     int idx = hasToBeEncoded(c);    
  10.     if (c==' ') {
  11.  if (firstSpace) { // si c'est le 1er espace, on l'encode pas
  12.      idx=-1;
  13.      firstSpace = false;
  14.  }
  15.     } else
  16.   firstSpace = true;;
  17.     if (idx != -1) {
  18.  buffer.append('&').append(codes[idx][0]).append(';');
  19.     } else if ((int)c > 128) {
  20.  buffer.append("&#" + (int)c + ";" );     
  21.     } else {
  22.  buffer.append(c);
  23.     }
  24. }
  25. return new String(buffer);
  26.     }
  27.     protected static int hasToBeEncoded(char c) {
  28. for (int i=0; i < codes.length; i++)
  29.     if (codes[i][1].indexOf(c)!=-1)
  30.  return i;
  31. return -1;
  32.     }
  33.     private static String[][] codes = {
  34. {"agrave", "à"},
  35. {"acirc", "â"},
  36. {"auml", "ä"},
  37. {"aelig", "æ"},
  38. {"ccedil", "ç"},
  39. {"egrave", "è"},
  40. {"eacute", "é"},
  41. {"ecirc", "ê"},
  42. {"euml", "ë"},
  43. {"icirc", "î"},
  44. {"iuml", "ï"},
  45. {"ocirc", "ô"},
  46. {"ouml", "ö"},
  47. {"ucirc", "û"},
  48. {"uuml", "ü"},
  49. {"gt", ">"},
  50. {"lt", "<"},
  51. {"times", "×"},
  52. {"divide", "÷"},
  53. {"nbsp", " "},
  54. {"copy", "©"},
  55. {"amp", "&"},
  56. {"quot", "\""},
  57. {"reg", "®"},
  58. {"micro", "µ"},
  59. {"sect", "§"},
  60. {"curren", "¤"},
  61. {"deg", "°"},
  62.     };


 
remarque : tous les caractères spécieux ne sont pas indiqués dans cette liste pour des raisons d'efficacités. Dans le cas où il n'est aps présant, il va utiliser le format "&#code_unicode;" si tu souhaites avoir une gestion complète (enfin je crois) des caractères spéciaux sans utiliser le code unicode, tu peux utiliser cette liste là :  

Code :
  1. private static String[][] codes = {
  2. {"nbsp", String.valueOf((char)160)},
  3.                              
  4. {"iexcl", String.valueOf((char) 161)},
  5. {"cent", String.valueOf((char) 162)},
  6. {"pound", String.valueOf((char) 163)},
  7. {"curren", String.valueOf((char) 164)},
  8. {"yen", String.valueOf((char) 165)},
  9. {"brvbar", String.valueOf((char) 166)},
  10.                              
  11. {"sect", String.valueOf((char) 167)},
  12. {"uml", String.valueOf((char) 168)},
  13.                              
  14. {"copy", String.valueOf((char) 169)},
  15. {"ordf", String.valueOf((char) 170)},
  16. {"laquo", String.valueOf((char) 171)},
  17.                              
  18. {"not", String.valueOf((char) 172)},
  19. {"shy", String.valueOf((char) 173)},
  20.                              
  21. {"reg", String.valueOf((char) 174)},
  22.                              
  23. {"macr", String.valueOf((char) 175)},
  24.                              
  25. {"deg", String.valueOf((char) 176)},
  26. {"plusmn", String.valueOf((char) 177)},
  27.                              
  28. {"sup2", String.valueOf((char) 178)},
  29.                              
  30. {"sup3", String.valueOf((char) 179)},
  31.                              
  32. {"acute", String.valueOf((char) 180)},
  33.                              
  34. {"micro", String.valueOf((char) 181)},
  35. {"para", String.valueOf((char) 182)},
  36.                              
  37. {"middot", String.valueOf((char) 183)},
  38.                              
  39. {"cedil", String.valueOf((char) 184)},
  40. {"sup1", String.valueOf((char) 185)},
  41.                              
  42. {"ordm", String.valueOf((char) 186)},
  43.                              
  44. {"raquo", String.valueOf((char) 187)},
  45.                              
  46. {"frac14", String.valueOf((char) 188)},
  47.                              
  48. {"frac12", String.valueOf((char) 189)},
  49.                              
  50. {"frac34", String.valueOf((char) 190)},
  51.                              
  52. {"iquest", String.valueOf((char) 191)},
  53.                              
  54. {"Agrave", String.valueOf((char) 192)},
  55.                              
  56.                              
  57. {"Aacute", String.valueOf((char) 193)},
  58.                              
  59. {"Acirc", String.valueOf((char) 194)},
  60.                              
  61. {"Atilde", String.valueOf((char) 195)},
  62.                              
  63. {"Auml", String.valueOf((char) 196)},
  64.                              
  65. {"Aring", String.valueOf((char) 197)},
  66.                              
  67.                              
  68. {"AElig", String.valueOf((char) 198)},
  69.                              
  70.                              
  71. {"Ccedil", String.valueOf((char) 199)},
  72.                              
  73. {"Egrave", String.valueOf((char) 200)},
  74.                              
  75. {"Eacute", String.valueOf((char) 201)},
  76.                              
  77. {"Ecirc", String.valueOf((char) 202)},
  78.                              
  79. {"Euml", String.valueOf((char) 203)},
  80.                              
  81. {"Igrave", String.valueOf((char) 204)},
  82.                              
  83. {"Iacute", String.valueOf((char) 205)},
  84.                              
  85. {"Icirc", String.valueOf((char) 206)},
  86.                              
  87. {"Iuml", String.valueOf((char) 207)},
  88.                              
  89. {"ETH", String.valueOf((char) 208)},
  90. {"Ntilde", String.valueOf((char) 209)},
  91.                              
  92. {"Ograve", String.valueOf((char) 210)},
  93.                              
  94. {"Oacute", String.valueOf((char) 211)},
  95.                              
  96. {"Ocirc", String.valueOf((char) 212)},
  97.                              
  98. {"Otilde", String.valueOf((char) 213)},
  99.                              
  100. {"Ouml", String.valueOf((char) 214)},
  101.                              
  102. {"times", String.valueOf((char) 215)},
  103. {"Oslash", String.valueOf((char) 216)},
  104.                              
  105.                              
  106. {"Ugrave", String.valueOf((char) 217)},
  107.                              
  108. {"Uacute", String.valueOf((char) 218)},
  109.                              
  110. {"Ucirc", String.valueOf((char) 219)},
  111.                              
  112. {"Uuml", String.valueOf((char) 220)},
  113.                              
  114. {"Yacute", String.valueOf((char) 221)},
  115.                              
  116. {"THORN", String.valueOf((char) 222)},
  117.                              
  118. {"szlig", String.valueOf((char) 223)},
  119.                              
  120. {"agrave", String.valueOf((char) 224)},
  121.                              
  122.                              
  123. {"aacute", String.valueOf((char) 225)},
  124.                              
  125. {"acirc", String.valueOf((char) 226)},
  126.                              
  127. {"atilde", String.valueOf((char) 227)},
  128.                              
  129. {"auml", String.valueOf((char) 228)},
  130.                              
  131. {"aring", String.valueOf((char) 229)},
  132.                              
  133.                              
  134. {"aelig", String.valueOf((char) 230)},
  135.                              
  136. {"ccedil", String.valueOf((char) 231)},
  137.                              
  138. {"egrave", String.valueOf((char) 232)},
  139.                              
  140. {"eacute", String.valueOf((char) 233)},
  141.                              
  142. {"ecirc", String.valueOf((char) 234)},
  143.                              
  144. {"euml", String.valueOf((char) 235)},
  145.                              
  146. {"igrave", String.valueOf((char) 236)},
  147.                              
  148. {"iacute", String.valueOf((char) 237)},
  149.                              
  150. {"icirc", String.valueOf((char) 238)},
  151.                              
  152. {"iuml", String.valueOf((char) 239)},
  153.                              
  154. {"eth", String.valueOf((char) 240)},
  155. {"ntilde", String.valueOf((char) 241)},
  156.                              
  157. {"ograve", String.valueOf((char) 242)},
  158.                              
  159. {"oacute", String.valueOf((char) 243)},
  160.                              
  161. {"ocirc", String.valueOf((char) 244)},
  162.                              
  163. {"otilde", String.valueOf((char) 245)},
  164.                              
  165. {"ouml", String.valueOf((char) 246)},
  166.                              
  167. {"divide", String.valueOf((char) 247)},
  168. {"oslash", String.valueOf((char) 248)},
  169.                              
  170.                              
  171. {"ugrave", String.valueOf((char) 249)},
  172.                              
  173. {"uacute", String.valueOf((char) 250)},
  174.                              
  175. {"ucirc", String.valueOf((char) 251)},
  176.                              
  177. {"uuml", String.valueOf((char) 252)},
  178.                              
  179. {"yacute", String.valueOf((char) 253)},
  180.                              
  181. {"thorn", String.valueOf((char) 254)},
  182.                              
  183. {"yuml", String.valueOf((char) 255)},
  184.                              
  185. {"Alpha", String.valueOf((char) 913)},
  186. {"Beta", String.valueOf((char) 914)},
  187. {"Gamma", String.valueOf((char) 915)},
  188.                                
  189. {"Delta", String.valueOf((char) 916)},
  190.                                
  191. {"Epsilon", String.valueOf((char) 917)},
  192. {"Zeta", String.valueOf((char) 918)},
  193. {"Eta", String.valueOf((char) 919)},
  194. {"Theta", String.valueOf((char) 920)},
  195.                                
  196. {"Iota", String.valueOf((char) 921)},
  197. {"Kappa", String.valueOf((char) 922)},
  198. {"Lambda", String.valueOf((char) 923)},
  199.                                
  200. {"Mu", String.valueOf((char) 924)},
  201. {"Nu", String.valueOf((char) 925)},
  202. {"Xi", String.valueOf((char) 926)},
  203. {"Omicron", String.valueOf((char) 927)},
  204. {"Pi", String.valueOf((char) 928)},
  205. {"Rho", String.valueOf((char) 929)},
  206. {"Sigma", String.valueOf((char) 931)},
  207.                                
  208. {"Tau", String.valueOf((char) 932)},
  209. {"Upsilon", String.valueOf((char) 933)},
  210.                                
  211. {"Phi", String.valueOf((char) 934)},
  212.                                
  213. {"Chi", String.valueOf((char) 935)},
  214. {"Psi", String.valueOf((char) 936)},
  215.                                
  216. {"Omega", String.valueOf((char) 937)},
  217.                                
  218. {"alpha", String.valueOf((char) 945)},
  219.                                
  220. {"beta", String.valueOf((char) 946)},
  221. {"gamma", String.valueOf((char) 947)},
  222.                                
  223. {"delta", String.valueOf((char) 948)},
  224.                                
  225. {"epsilon", String.valueOf((char) 949)},
  226.                                
  227. {"zeta", String.valueOf((char) 950)},
  228. {"eta", String.valueOf((char) 951)},
  229. {"theta", String.valueOf((char) 952)},
  230.                                
  231. {"iota", String.valueOf((char) 953)},
  232. {"kappa", String.valueOf((char) 954)},
  233.                                
  234. {"lambda", String.valueOf((char) 955)},
  235.                                
  236. {"mu", String.valueOf((char) 956)},
  237. {"nu", String.valueOf((char) 957)},
  238. {"xi", String.valueOf((char) 958)},
  239. {"omicron", String.valueOf((char) 959)},
  240. {"pi", String.valueOf((char) 960)},
  241. {"rho", String.valueOf((char) 961)},
  242. {"sigmaf", String.valueOf((char) 962)},
  243.                                
  244. {"sigma", String.valueOf((char) 963)},
  245.                                
  246. {"tau", String.valueOf((char) 964)},
  247. {"upsilon", String.valueOf((char) 965)},
  248.                                
  249. {"phi", String.valueOf((char) 966)},
  250. {"chi", String.valueOf((char) 967)},
  251. {"psi", String.valueOf((char) 968)},
  252. {"omega", String.valueOf((char) 969)},
  253.                                
  254. {"thetasym", String.valueOf((char) 977)},
  255.                                
  256. {"upsih", String.valueOf((char) 978)},
  257.                                
  258. {"piv", String.valueOf((char) 982)},
  259. {"bull", String.valueOf((char) 8226)},
  260.                                
  261. {"hellip", String.valueOf((char) 8230)},
  262.                                
  263. {"prime", String.valueOf((char) 8242)},
  264. {"Prime", String.valueOf((char) 8243)},
  265.                                
  266. {"oline", String.valueOf((char) 8254)},
  267.                                
  268. {"frasl", String.valueOf((char) 8260)},
  269. {"weierp", String.valueOf((char) 8472)},
  270.                                
  271. {"image", String.valueOf((char) 8465)},
  272.                                
  273. {"real", String.valueOf((char) 8476)},
  274.                                
  275. {"trade", String.valueOf((char) 8482)},
  276. {"alefsym", String.valueOf((char) 8501)},
  277.                                
  278. {"larr", String.valueOf((char) 8592)},
  279. {"uarr", String.valueOf((char) 8593)},
  280. {"rarr", String.valueOf((char) 8594)},
  281. {"darr", String.valueOf((char) 8595)},
  282. {"harr", String.valueOf((char) 8596)},
  283. {"crarr", String.valueOf((char) 8629)},
  284.                                
  285. {"lArr", String.valueOf((char) 8656)},
  286. {"uArr", String.valueOf((char) 8657)},
  287. {"rArr", String.valueOf((char) 8658)},
  288. {"dArr", String.valueOf((char) 8659)},
  289. {"hArr", String.valueOf((char) 8660)},
  290. {"forall", String.valueOf((char) 8704)},
  291. {"part", String.valueOf((char) 8706)},
  292. {"exist", String.valueOf((char) 8707)},
  293. {"empty", String.valueOf((char) 8709)},
  294.                                
  295. {"nabla", String.valueOf((char) 8711)},
  296.                                
  297. {"isin", String.valueOf((char) 8712)},
  298. {"notin", String.valueOf((char) 8713)},
  299. {"ni", String.valueOf((char) 8715)},
  300. {"prod", String.valueOf((char) 8719)},
  301.                                
  302. {"sum", String.valueOf((char) 8721)},
  303. {"minus", String.valueOf((char) 8722)},
  304. {"lowast", String.valueOf((char) 8727)},
  305. {"radic", String.valueOf((char) 8730)},
  306.                                
  307. {"prop", String.valueOf((char) 8733)},
  308. {"infin", String.valueOf((char) 8734)},
  309. {"ang", String.valueOf((char) 8736)},
  310. {"and", String.valueOf((char) 8743)},
  311. {"or", String.valueOf((char) 8744)},
  312. {"cap", String.valueOf((char) 8745)},
  313. {"cup", String.valueOf((char) 8746)},
  314. {"int", String.valueOf((char) 8747)},
  315. {"there4", String.valueOf((char) 8756)},
  316. {"sim", String.valueOf((char) 8764)},
  317.                                
  318. {"cong", String.valueOf((char) 8773)},
  319. {"asymp", String.valueOf((char) 8776)},
  320.                                
  321. {"ne", String.valueOf((char) 8800)},
  322. {"equiv", String.valueOf((char) 8801)},
  323. {"le", String.valueOf((char) 8804)},
  324. {"ge", String.valueOf((char) 8805)},
  325.                                
  326. {"sub", String.valueOf((char) 8834)},
  327. {"sup", String.valueOf((char) 8835)},
  328. {"nsub", String.valueOf((char) 8836)},
  329. {"sube", String.valueOf((char) 8838)},
  330. {"supe", String.valueOf((char) 8839)},
  331.                                
  332. {"oplus", String.valueOf((char) 8853)},
  333.                                
  334. {"otimes", String.valueOf((char) 8855)},
  335.                                
  336. {"perp", String.valueOf((char) 8869)},
  337.                                
  338. {"sdot", String.valueOf((char) 8901)},
  339. {"lceil", String.valueOf((char) 8968)},
  340.                                
  341. {"rceil", String.valueOf((char) 8969)},
  342. {"lfloor", String.valueOf((char) 8970)},
  343.                                
  344. {"rfloor", String.valueOf((char) 8971)},
  345. {"lang", String.valueOf((char) 9001)},
  346.                                
  347. {"rang", String.valueOf((char) 9002)},
  348.                                
  349. {"loz", String.valueOf((char) 9674)},
  350. {"spades", String.valueOf((char) 9824)},
  351. {"clubs", String.valueOf((char) 9827)},
  352.                                
  353. {"hearts", String.valueOf((char) 9829)},
  354.                                
  355. {"diams", String.valueOf((char) 9830)},
  356. {"quot", String.valueOf((char) 34)}, 
  357.                                
  358. {"amp", String.valueOf((char) 38)}, 
  359. {"lt", String.valueOf((char) 60)}, 
  360. {"gt", String.valueOf((char) 62)}, 
  361. {"OElig", String.valueOf((char) 338)}, 
  362.                                
  363. {"oelig", String.valueOf((char) 339)}, 
  364. {"Scaron", String.valueOf((char) 352)}, 
  365.                                
  366. {"scaron", String.valueOf((char) 353)}, 
  367.                                
  368. {"Yuml", String.valueOf((char) 376)}, 
  369.                                
  370. {"circ", String.valueOf((char) 710)}, 
  371.                                
  372. {"tilde", String.valueOf((char) 732)}, 
  373. {"ensp", String.valueOf((char) 8194)},
  374. {"emsp", String.valueOf((char) 8195)},
  375. {"thinsp", String.valueOf((char) 8201)},
  376. {"zwnj", String.valueOf((char) 8204)},
  377.                                
  378. {"zwj", String.valueOf((char) 8205)},
  379. {"lrm", String.valueOf((char) 8206)},
  380. {"rlm", String.valueOf((char) 8207)},
  381. {"ndash", String.valueOf((char) 8211)},
  382. {"mdash", String.valueOf((char) 8212)},
  383. {"lsquo", String.valueOf((char) 8216)},
  384.                                
  385. {"rsquo", String.valueOf((char) 8217)},
  386.                                
  387. {"sbquo", String.valueOf((char) 8218)},
  388. {"ldquo", String.valueOf((char) 8220)},
  389.                                
  390. {"rdquo", String.valueOf((char) 8221)},
  391.                                
  392. {"bdquo", String.valueOf((char) 8222)},
  393. {"dagger", String.valueOf((char) 8224)},
  394. {"Dagger", String.valueOf((char) 8225)},
  395. {"permil", String.valueOf((char) 8240)},
  396. {"lsaquo", String.valueOf((char) 8249)},
  397. {"rsaquo", String.valueOf((char) 8250)},
  398. {"euro", String.valueOf((char) 8364)} 
  399.     };


 
remarque : il y a moyen d'utiliser une Map plutot qu'un double tableau pour grandement optimiser la méthode hasToBeEncoded !

Reply

Marsh Posté le 31-07-2002 à 14:35:24    

THANX A LOT !

Reply

Marsh Posté le 31-07-2002 à 14:46:38    

Ha vi, vu comme ça, il y en a un paquet  :D

Reply

Marsh Posté le 31-07-2002 à 17:01:09    

bobuse a écrit a écrit :

Ha vi, vu comme ça, il y en a un paquet  :D  




quand je te le disais ... :)
si je me souviens bien, j'avais chopé cette liste sur la doc HTML4.0 du W3C => ils doivent tuos y être  

Reply

Marsh Posté le 12-08-2002 à 13:52:54    

question pour le fainéant
 
{ et } peuvent etre représentés tels quel dans du texte HTML classique ou bien il faut changer par une valeur fournie par ta question


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

Marsh Posté le 12-08-2002 à 13:52:54   

Reply

Marsh Posté le 12-08-2002 à 14:05:00    

DarkLord a écrit a écrit :

question pour le fainéant
 
{ et } peuvent etre représentés tels quel dans du texte HTML classique ou bien il faut changer par une valeur fournie par ta question




 
 :heink:

Reply

Marsh Posté le 12-08-2002 à 14:11:02    

exo_ a écrit a écrit :

 
 
 :heink:  




 
 :ange:


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

Marsh Posté le 12-08-2002 à 14:25:26    

c vrai que ta question n'est pas tres claire, darklord:D


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

Marsh Posté le 12-08-2002 à 14:33:37    

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

c vrai que ta question n'est pas tres claire, darklord:D




+1 :D

Reply

Marsh Posté le 12-08-2002 à 14:39:12    

ah oups. Bin je voulais simplement savoir (vu que tu le sais) si je peux mettre les caractères { et } dans une page HTML sans problème.
 
Dans ce topic on expose les problèmes avec é è ç et compagnie. Je veux juste savoir si c'est pareil pour { et }


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

Marsh Posté le 12-08-2002 à 14:43:13    

nan, y a pas de problème pour ces caractères là ...

Reply

Marsh Posté le 12-08-2002 à 14:44:45    

merci ;)


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

Sujets relatifs:

Leave a Replay

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