java 在 UTF-16 上编码字符集

java encode charset on UTF-16

你能帮我吗,我可以在 UTF-16“测试”输出 0074 0065 0073 0074 上编码 java 中的字符集吗?有一些功能吗?

String x = "test";
System.out.println(x);

Java 的标准方法是 class String 的方法 getBytes(Charset charset)。为了演示我只写了一个小方法:

private static void encodingTest() {
    String testStr = "test";
    System.out.println(StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(testStr));
    StringBuilder sb = new StringBuilder();
    byte[] bytes = testStr.getBytes(StandardCharsets.UTF_16);
    for(byte b: bytes) {
        sb.append(b).append(" ");
    }
    System.out.println(sb.toString());
}

该方法的输出是:

\u0074\u0065\u0073\u0074
-2 -1 0 116 0 101 0 115 0 116 

请注意,值 116、101、115、116 是十进制值,如果转换为十六进制,则为 74、65、73 和 74 - 这就是您要查找的值。您在我的代码中看到的 class StringUnicodeEncoderDecoder 输出 \u0074\u0065\u0073\u0074 不是标准 Java 的一部分。它是我编写的开源 MgntUtils 库的一部分。但在这种情况下,它可能对您非常有用。这是 class StringUnicodeEncoderDecoder. The library itself could be obtained as Maven artifacts from here or from Github 的 Javadoc 作为 jar(包括源代码和 Javadoc)

这里是修改后的代码:

private static void encodingTest() {
    String testStr = "test";
    String encoded = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(testStr);
    System.out.println(encoded);
    System.out.println(encoded.replaceAll("\\u", " "));
    System.out.println(encoded.replaceAll("\\u", ""));
}

输出将是:

\u0074\u0065\u0073\u0074
 0074 0065 0073 0074
0074006500730074