Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中将字符串转换为UTF-16表示形式_Java_String_Encoding_Utf 8_Utf 16 - Fatal编程技术网

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

在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

我正在尝试将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.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