在Java中将字符串转换为UTF-16表示形式
我正在尝试将Java字符串转换为各种编码类型并打印出来 例如,在Java中将字符串转换为UTF-16表示形式,java,string,encoding,utf-8,utf-16,Java,String,Encoding,Utf 8,Utf 16,我正在尝试将Java字符串转换为各种编码类型并打印出来 例如,luke在UTF-8和UTF-16中是6c756b65,而汉字猪将是UTF-8中的E7 8C AA和UTF-16中的732A 如何编写一个函数来实现这一点 new String( org.apache.commons.codec.binary.Hex.encodeHex(str.getBytes("UTF-16"))); 似乎不适用于UTF-16公共类使用武力{ 公共静态void main(最终字符串[]args) 抛出java.i
luke
在UTF-8
和UTF-16
中是6c756b65
,而汉字猪代码>将是UTF-8中的E7 8C AA
和UTF-16中的732A
如何编写一个函数来实现这一点
new String( org.apache.commons.codec.binary.Hex.encodeHex(str.getBytes("UTF-16")));
似乎不适用于UTF-16
公共类使用武力{
公共静态void main(最终字符串[]args)
抛出java.io.UnsupportedEncodingException{
对于(最后一个字节b:args[0]。getBytes(args[1])){
System.out.printf(“%1$02X”,(b&0xFF));
}
System.out.println();
}
}
试验
愿原力与你同在
更新
如中所述,(b&0xFF)
部分是不必要的。卢克的UTF-16编码将是006C 0075 006B 0065
<代码>6C 75 6B 65
将是汵步代码>@Dashwuff我正在使用,因为我还不知道如何在Java中实现它。你是怎么转换的?谢谢你,伙计!我的确实有用。我只是忘记了前面严格意义上UTF-16的FE FF。我能知道为什么(b&0xFF)?@Mubasher将有符号的8位值转换成无符号值,我刚刚意识到,这是不必要的。
$ 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