ASC Visual Basic pour Java


J'ai besoin d'une fonction sur Java qui fait la même chose que la fonction ASC sur Visual Basic. Je l'ai cherché sur Internet, mais je n'ai pas trouvé la solution.

La chaîne dont je dois connaître les codes a été créée sur Visual Basic. Il est conforme aux caractères ISO 8859-1 et Microsoft Windows Latin-1. La fonction ASC sur Visual Basic connaît ces codes, mais en Java, je ne trouve pas de fonction qui fasse la même chose.

Je sais en Java ceci phrase:

String myString = "ÅÛ–ßÕÅÝ•ÞÃ";
int first = (int)string.chartAt(0); // "Å"- VB and Java returns: 197
int second = (int)string.chartAt(0); // "Û" - VB and Java returns: 219
int third = (int)string.chartAt(0); // "–" - VB returns: 150 and Java returns: 8211

Les deux premiers caractères, je n'ai pas eu de problème, mais le troisième caractère n'est pas un code ASCII.

Comment puis-je obtenir les mêmes codes en VB et Java?

Author: Marcelo Gonzaga Silva, 2015-02-21

1 answers

Tout d'abord, notez que ISO 8859-1 != Windows Latin-1. (Voir http://en.wikipedia.org/wiki/Windows-1252)

Le problème est que Java encode les caractères en UTF16, donc la conversion en int entraînera généralement la valeur Unicode du char.

Pour obtenir le codage latin-1 d'un caractère, convertissez-le d'abord en un tableau d'octets codés Latin-1:

public class Encoding {

    public static void main(String[] args) {
        // Cp1252 is Windows codepage 1252
        byte[] bytes = "ÅÛ–ßÕÅÝ•ÞÃ".getBytes(Charset.forName("Cp1252"));
        for (byte b: bytes) {
            System.out.println(b & 255);
        }
    }

}

Imprime:

197
219
150
223
213
197
221
149
222
195
 3
Author: Adrian Leonhard, 2015-02-21 21:23:39