ASC Visual Basic Java版

我需要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
上一篇:通过C#的COM互操作提高正VB样式错误代码


下一篇:这个正则表达式(VBScript / JavaScript风格)有什么问题?