Caractère spécial: '-96'

Résolu
moi411 Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   -  
moi411 Messages postés 179 Date d'inscription   Statut Membre Dernière intervention   -
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...
A voir également:

4 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
-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 179 Date d'inscription   Statut Membre Dernière intervention   2
 
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 179 Date d'inscription   Statut Membre Dernière intervention   2
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 179 Date d'inscription   Statut Membre Dernière intervention   2
 
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