在Java中将字符串转换为UTF-16表示形式

时间:2013-09-10 04:11:25

标签: java string encoding utf-8 utf-16

我正在尝试将Java字符串转换为各种编码类型并将其打印出来。

例如,luke 6C 75 6B 65UTF-8 UTF-16,而E7 8C AA UTF-8 732A UTF-16 new String( org.apache.commons.codec.binary.Hex.encodeHex(str.getBytes("UTF-16"))); UTF-16中有1}}和{{1}}。

我如何编写一个能够做到这一点的函数?

{{1}}

似乎不适用于{{1}}。

1 个答案:

答案 0 :(得分:7)

public class UseTheForce {
    public static void main(final String[] args)
        throws java.io.UnsupportedEncodingException {
        for (final byte b : args[0].getBytes(args[1])) {
            System.out.printf("%1$02X ", (b & 0xFF));
        }
        System.out.println();
    }
}

测试

$ java UseTheForce luke US-ASCII
6C 75 6B 65

$ java UseTheForce luke UTF-8
6C 75 6B 65

$ java UseTheForce luke UTF-16
FE FF 00 6C 00 75 00 6B 00 65

$ java UseTheForce luke UTF-16BE
00 6C 00 75 00 6B 00 65

$ java UseTheForce luke UTF-16LE
6C 00 75 00 6B 00 65 00

$ java UseTheForce luke UTF-32
00 00 00 6C 00 00 00 75 00 00 00 6B 00 00 00 65

愿力量与你同在。

<强>更新

正如Formatter.html#detail中所述,(b & 0xFF)部分不是必需的。