Obtenir Code ASCII

Résolu/Fermé
m3allem58 Messages postés 58 Date d'inscription mardi 10 mars 2009 Statut Membre Dernière intervention 7 janvier 2014 - Modifié par m3allem58 le 9/10/2013 à 17:34
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 9 oct. 2013 à 19:43
Bonjour,

Dans la tabe des codes ascii, il ya des caractères dupliqués,
par exemple le caractère '^' a deux codes ascii 136 et 710

le code:
int ascii = '^'
renvoie 710 et je veux obtenir 136.

Apparemment 710 est en Unicode et 136 est en ASCII, je veux avoir la représentation ASCII. Est ce qu'il ya un truc à préciser comme le charset : soit UTF-8,Unicode , ISO...

comment faire?


Merci.
A voir également:

3 réponses

Utilisateur anonyme
9 oct. 2013 à 17:32
Bonjour

l'ASCII est un code sur 7 bits, il ne comporte donc des codes que de 0 à 127 : pas de 136 ni de 710.
En ASCII (et en unicode) le code de l'accent circonflexe est 94 (5E hexadécimal).
136 est le code de l'accent circonflexe en windows-1252
710 (2C6 hexadécimal) est le code Unicode de l'accent circonflexe en tant que modificateur de lettre.

Je ne connais pas Java, mais il y a peut-être un moyen de le forcer à travailler en windows-1252. Peut-être.
0
m3allem58 Messages postés 58 Date d'inscription mardi 10 mars 2009 Statut Membre Dernière intervention 7 janvier 2014
Modifié par m3allem58 le 9/10/2013 à 19:08
merci pour la réponse.

j'ai forcé java JVM avec System.setProperty( "file.encoding","Windows-1252 ");

mais ça n'a pas marché.
0
m3allem58 Messages postés 58 Date d'inscription mardi 10 mars 2009 Statut Membre Dernière intervention 7 janvier 2014
9 oct. 2013 à 19:35
j'ai trouvé entre temps une autre solution,

Charset cs = Charset.forName("windows-1252");
ByteBuffer b = cs.encode(String.valueOf('^'));
int code = b.get(0) & 0xFF


merci.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 9/10/2013 à 19:47
Je complète avec les notions de Java ;-)

Ce n'est pas la peine de forcer Java à travailler en windows-1252 car c'est déjà le charset par défaut sous Windows vu que c'est le charset du système.

System.out.println(Charset.defaultCharset()); // windows-1252

Après effectivement il y a des caractères qui se ressemblent dans les tables Unicode, car ils ne sont pas rangés selon leur ressemblance mais selon leurs origines et leurs rôles. Par exemple le 'A' peut à la fois être "Latin capital letter a" 0x0041, "Greek capital letter alpha" 0x0391, "Cyrillic capital letter a" 0x0410, etc.

Donc effectivement tu as les caractères 136 et 710 qui ressemblent à des accents circonflexes, mais ils n'en sont pas... d'ailleurs quand tu les affiches on voit clairement qu'ils sont plus petits. Le seul accent circonflexe est celui que tu as sur ton clavier, le caractère ascii 94.

System.out.println((int) '^'); // 94

System.out.println(Character.getName(94)); // CIRCUMFLEX ACCENT
System.out.println(Character.getName(136)); // CHARACTER TABULATION SET
System.out.println(Character.getName(710)); // MODIFIER LETTER CIRCUMFLEX ACCENT

// Affichage graphique (la console Windows ne supporte pas l'Unicode)
JOptionPane.showMessageDialog(null, "\u005e\u0088\u02c6");

La confiance n'exclut pas le contrôle
0