我有一个UTF-8编码(字面上)的文本,像这样"\xE2\x80\x93."
我想用Java将其转换为Unicode。
但是我找不到方法将其转换。
有人能帮助我吗?
谢谢, Sat
我有一个UTF-8编码(字面上)的文本,像这样"\xE2\x80\x93."
我想用Java将其转换为Unicode。
但是我找不到方法将其转换。
有人能帮助我吗?
谢谢, Sat
System.out.println(new String(new byte[] {
(byte)0xE2, (byte)0x80, (byte)0x93 }, "UTF-8"));
打印一个破折号,这就是那三个字节所编码的内容。从你的问题中并不清楚你是否有这样的三个字节,还是仅仅拥有你所发布的字符串。如果你拥有该字符串,那么可以事先将其解析为字节,例如使用以下方法:
final String[] bstrs = "\\xE2\\x80\\x93".split("\\\\x");
final byte[] bytes = new byte[bstrs.length-1];
for (int i = 1; i < bstrs.length; i++)
bytes[i] = (byte) ((Integer.parseInt(bstrs[i], 16) << 24) >> 24);
System.out.println(new String(bytes, "UTF-8"));
<< 24
和 >> 24
? - Beryllium您可以使用Apache Commons Lang StringEscapeUtils。
或者,如果您知道字符串始终为\xHH\xHH,则可以:
String hex = input.replace("\x", "");
byte[] bytes = hexStringToByteArray(hex);
String result = new String(bytes, "utf-8");
hexStringToByteArray
是在这里。
还可以看看这个其他的SO 答案。
char[]
,然后将其转换为你想要的String
。 - Luiggi Mendozabyte[]
构造函数是解决您问题的答案。必要时,请提供字符集名称。 - Marko TopolnikString input = "\xE2\x80\x93";
这样的吗? - axtavt