Bonjour,

Voilà, je parse des logs et recois parfois des incohérences, comme un % entamant un caractère Unicode (au lieu de \).
J'essaie donc de remplacer le % par \ mais le URLDecoder ne fonctionne pas - visiblement - sur un .replace !

Mon code (pas propre mais c'est pour du test !)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
    String text     = "fabricant%20housse%20poly%u00e9thyl%u00e8ne";
//    String text     = "fabricant%20housse%20poly\u00e9thyl\u00e8ne";
    try {
      String keyword  = java.net.URLDecoder.decode(text, "UTF-8");
      System.out.println("kw décodé step 1 : " + keyword);
    } catch (Exception e) {
      System.out.println("Exception, on continue en remplaçant les %");
      try {
        String keyword = java.net.URLDecoder.decode(text.replace("%u00", "\\u00"), "UTF-8");
        System.out.println("kw décodé step 2 : " + keyword);
      } catch (Exception e1) {
      }
    }
Et j'obtiens comme résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Exception, on continue en remplaçant les %
kw décodé step 2 : fabricant housse poly\u00e9thyl\u00e8ne
J'ai laissé volontairement le text en commentaire car si au lieu d'utiliser celui mal encodé j'utilise celui qui est en commentaires (donc directement au bon format), ça fonctionne correctement ! Je n'arrive pas à comprendre.

En d'autres termes et pour tenter de simplifier :
decode("\u00e9") me donne bien "fabricant housse poly\u00e9thyl\u00e8ne"
decode( "%u00e9" en remplacant le % par \ ) me donne "fabricant housse poly\u00e9thyl\u00e8ne"

Je crois comprendre qu'une fois le replace fait, Java ne considère plus les \ comme des caractères de contrôles, mais je nage un peu !

Merci

--
Laurent