ASC Visual Basic per Java


Ho bisogno di una funzione su Java che faccia lo stesso della funzione ASC su Visual Basic. L'ho cercato su Internet, ma non riesco a trovare la soluzione.

La stringa che devo conoscere i codici è stata creata su Visual Basic. È secondo ISO 8859-1 e Microsoft Windows Latin-1 caratteri. La funzione ASC su Visual Basic conosce quei codici, ma in Java non riesco a trovare una funzione che faccia la stessa cosa.

So in Java questo frase:

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

I primi due caratteri, non ho avuto problemi, ma il terzo carattere non è un codice ASCII.

Come posso ottenere gli stessi codici in VB e Java?

Author: Marcelo Gonzaga Silva, 2015-02-21

1 answers

Prima di tutto, si noti che ISO 8859-1 != Finestre Latino-1. (Vedi http://en.wikipedia.org/wiki/Windows-1252 )

Il problema è che Java codifica i caratteri come UTF16, quindi il casting su int genererà generalmente il valore Unicode del carattere.

Per ottenere la codifica Latin-1 di un carattere, prima convertirlo in un array di byte codificato 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);
        }
    }

}

Stampa:

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