Caractère spécial: '-96'

Résolu/Fermé
moi411 Messages postés 180 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 - 5 juil. 2015 à 13:12
moi411 Messages postés 180 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 - 5 juil. 2015 à 17:19
Bonjour,
Je voudrais savoir si quelqu'un connait ce caractère '-96' qui apparait comme espace à l'écran.
Je l'ai découvert via la fonction getBytes() et il semblerai qu'il soit automatiquement insérer pour séparer les milliers des unités par la classe "NumberFormat".

J'aurais besoin de le supprimer. J'ai testé
1) maChaine.replace(" ", "");
2) maChaine.replace((char)(-96), (char)(32));
maChaine.replace(" ", "");
Rien y fait il est toujours là!
Merci d'avance et à bientôt...

4 réponses

KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
5 juil. 2015 à 13:33
Bonjour,

Java utilise l'UTF-16 pour encoder ses caractères, la plupart des caractères ne sont donc pas encodés sur un seul octet mais sur deux...
-96 tout seul ne correspond à aucun caractère, combiné à un autre byte c'est tout à fait différent.

Tu devrais afficher tes caractères comme ceci pour avoir plus d'infos :

String s = "Hello World!";
for (char c : s.toCharArray())
    System.out.println((int) c
        + "\t" + Character.UnicodeBlock.of(c)
        + "\t" + Character.getType(c)
        + "\t" + Character.getName(c));
0
NHenry Messages postés 15047 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mars 2023 331
5 juil. 2015 à 13:36
-96, c'est en signé, je te conseil de le mettre en signé de de voir quel caractère est-ce en regardant la table de ta page de code.
0
moi411 Messages postés 180 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 2
5 juil. 2015 à 17:19
Hello,
Je suis programmeur amateur (livres, forum etc.)...
Et là, je suis un peu perdu, signé c'est en rapport avec le "-" je suppose? Mais théoriquement, 160 est signé lui aussi (signe "+")...
Enfin bref, je vais cherché un peu de ce côté pour voir si je peu récupérer un truc utile à mon niveau!
Merci encore et à bientôt!
0
moi411 Messages postés 180 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 2
5 juil. 2015 à 13:51
Re,
Et bien je vais noter ces fonctions-là aussi!!!
En tous cas, je te remerci pour la rapidité avec laquelle tu m'as répondu.

Et donc pour ceux qui aurait le même soucis, le caractère en question est en fait numéroté "160"...

Bonne fin de week-end
0
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
Modifié par KX le 5/07/2015 à 13:58
Le caractère 160 c'est nbsp, on en avait déjà parlé dans ta dernière discussion...

Remarque : 160 correspond bien à la version signée de -96 (160 = 256 - 96) comme l'expliquait NHenry
0
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 3 005
5 juil. 2015 à 13:51
Avec replaceAll tu peux utiliser des expressions régulières, du coup plutôt que d'essayer d'enlever explicitement le caractère qui te pose problème, tu peux exclure ceux qui ne sont pas ce que t'attends.

En clair : supprimer tout ce qui n'est pas un chiffre.

maChaine.replaceAll("[^0-9]", ""); // replaceAll("\\D", "");
0
moi411 Messages postés 180 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 2
5 juil. 2015 à 17:14
Re, re,
C'est bien pratique aussi! Dans mon programme je dois garder quelques caractères spéciaux, donc j'ai modifier ton expression:
machaine.replaceAll("[^0-9|.|-]", "");
Etant donné que tout fonctionne correctement, je supose que c'est correcte (pas "illégal" point de vue java)...

Bonne fin de week-end!
--
0