我输入了这样的字符ఈ。对于这个角色,我需要等效的Hex实体" 0C08"像这样。在java中是否有任何内置函数?
提前致谢。
答案 0 :(得分:2)
java中的字符保存在unicode中。 所以我们需要在读/写时指定编码 外部字节流。
请注意,此代码应在UTF-8控制台上打印两行相同的行:
String value = columnDetails.getColumnName();
System.out.println(value); //output with default encoding
System.out.write(value.getBytes("UTF-8"));//output with UTF-8
编辑: 如果你想要UTF-8编码的十六进制表示,那么试试这个:
//not optimized
String toHex(byte[] b) {
String s="";
for (int i=0; i<b.length; ++i) s+=String.format("%02X",b[i]&0xff);
return s;
}
System.out.println(toHex("ఈ".getBytes("UTF-8"))); //prints E0B088
Edit2:或者如果你想要Unicode(双字节表示)
static String toHex(String b) {
String s="";
for (int i=0; i<b.length(); ++i) s+=String.format("%04X",b.charAt(i)&0xffff);
return s;
}
System.out.println(toHex("ఈ")); //prints 0C08
答案 1 :(得分:0)
Java字符串是UTF-16。要获得UTF-8,您可以编写如下内容:
String string = "SomethingInTeluguOrwhatever";
byte[] utf8Bytes = string.getBytes(Charsets.forName("utf-8"));
这可以获得UTF-8值。如果你想要十六进制,迭代字节并用十六进制打印。