Si j'utilise des caractères ASCII 33-127, la méthode codePointAt
donne la valeur décimale correcte, par exemple:Java String.codePointAt retourne une valeur inattendue
String s1 = new String("#");
int val = s1.codePointAt(0);
Ce retour 35 qui est la valeur correcte.
Mais si je tente utiliser des caractères ASCII de 128 à 255 (ASCII étendu/ISO-8859-1), cette méthode donne une valeur erronée, par exemple:
String s1 = new String("ƒ") // Latin small letter f with hook
int val = s1.codePointAt(0);
Cela devrait retourner 159 selon this reference table, mais retourne à la place 409, pourquoi est-ce?
Votre table de référence est très mauvaise. C'est ce qu'on appelle "Extended ASCII", ce qui n'a pas beaucoup de sens puisqu'il existe des myriades de jeux de caractères différents qui pourraient tous être appelés "Extended ASCII". Il devrait au moins indiquer de quel personnage il s'agit. –
Regardez http://www.fileformat.info/info/unicode/char/192/index.htm pour toutes les informations sur ƒ. Vous y trouverez des informations sur les charsets et les pages de code qui prennent en charge ces caractères. –
ƒ ne fait pas partie de ISO-8859-1 –