我需要Java上的功能与Visual Basic上的ASC功能相同.我一直在互联网上寻找它,但是找不到解决方案.
我必须知道代码的String是在Visual Basic上创建的.它符合ISO 8859-1和Microsoft Windows Latin-1字符. Visual Basic上的ASC函数可以识别这些代码,但是在Java中,我找不到具有相同功能的函数.
我在Java中知道这句话:
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
前两个字符没有问题,但是第三个字符不是ASCII代码.
如何在VB和Java中获得相同的代码?
解决方法:
首先,请注意ISO 8859-1!= Windows Latin-1. (请参见http://en.wikipedia.org/wiki/Windows-1252)
问题在于Java将字符编码为UTF16,因此强制转换为int通常会导致char的Unicode值.
要获取char的Latin-1编码,请先将其转换为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);
}
}
}
印刷品:
197
219
150
223
213
197
221
149
222
195