2

我在一个旧的 VB6 类中有以下内容,我需要在 Android 中移动到一个 Java 类。

tmp = StrConv(vValue, vbUnicode, AESLOCALE)

tmp = StrConv(vData, vbFromUnicode, AESLOCALE) 

其中 AESLOCALE 是 1033

我四处打猎,但似乎无法解决如何解决这个问题。谢谢

4

1 回答 1

3

看起来您只需要在英语(Locale 1033 或 ISO_8859_1)和 unicode(UTF_16)之间来回转换。

首先,确保导入字符集:

    import static java.nio.charset.StandardCharsets.*;

对于您问题的第一行,您可以使用它来编码 UTF-16 中的字符集:

    //Convert to unicode/UTF_16:
    byte[] engilshBytes = myString.getBytes(ISO_8859_1); 
    String unicodeValue = new String(engilshBytes, UTF_16); 

对于您问题的底线,您可以使用它在 ISO_8859_1 中编码 unicode:

    //Convert to english/ISO_8859_1:
    byte[] unicodeBytes = myString.getBytes(UTF_16); 
    String englishValue = new String(unicodeBytes, ISO_8859_1); 

编辑:

链接到有关字符集的 Android 页面(自 Android 4.4 起有效):

https://developer.android.com/reference/java/nio/charset/StandardCharsets

链接到关于字符集的 Java 页面(NIO 从 Java 7 开始工作):

https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html

于 2018-09-11T04:53:07.317 回答