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?
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