我有一个像“\xE2\x80\x93”这样的 UTF-8(字面意思)。
我正在尝试使用 Java 将其转换为 Unicode。
但我无法找到一种方法来转换它。
谁可以帮我这个事?
问候,星期六
我有一个像“\xE2\x80\x93”这样的 UTF-8(字面意思)。
我正在尝试使用 Java 将其转换为 Unicode。
但我无法找到一种方法来转换它。
谁可以帮我这个事?
问候,星期六
System.out.println(new String(new byte[] {
(byte)0xE2, (byte)0x80, (byte)0x93 }, "UTF-8"));
打印一个 em-dash,这就是这三个字节的编码。从您的问题中不清楚您是否有这样的三个字节,或者实际上是您发布的字符串。如果您有字符串,则只需事先将其解析为字节,例如使用以下内容:
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"));
您可以使用 Apache Commons Lang StringEscapeUtils
或者,如果您确实知道该字符串将始终为 \xHH\xHH 那么您可以:
String hex = input.replace("\x", "");
byte[] bytes = hexStringToByteArray(hex);
String result = new String(bytes, "utf-8");
hexStringToByteArray
在这里。
另请参阅this other SO answer。