Python 有一个很好的函数来解码字符串中的 hex 和 unicode 字符,如下所示:
print "123\x20Fake\x20St\u002e".decode('unicode_escape')
将打印:
123 Fake St.
java中是否有类似的东西,或者这是必须用正则表达式处理的东西?
编辑 1
我相信我的问题与这个问题不同,因为看起来该问题要求解码仅十六进制的字符串。我的是混合的。
Python 有一个很好的函数来解码字符串中的 hex 和 unicode 字符,如下所示:
print "123\x20Fake\x20St\u002e".decode('unicode_escape')
将打印:
123 Fake St.
java中是否有类似的东西,或者这是必须用正则表达式处理的东西?
编辑 1
我相信我的问题与这个问题不同,因为看起来该问题要求解码仅十六进制的字符串。我的是混合的。
如果您尝试使用该字符串,您将收到一个错误,因为\x
is not a valid scape character。您可以使用将要替换的 unicode 形式\x
或\u00
八进制形式,而无需任何先前的字符。
统一码:
System.out.println("123\u0020Fake\u0020St\u002e"); // 123 Fake St.
八进制(20 十六进制到八进制是 40):
System.out.println("123\40Fake\40St\u002e"); // 123 Fake St.
另一方面,如果您对字符串进行了转义。
String scaped = "123\\x20Fake\\x20St\\u002e";
在java中是文字123\x20Fake\x20St\u002e
。
您可以看到这个答案来转换 scaped unicodes 字符,但您必须先处理十六进制,并且您可以将其替换为\x
前面\u00
提到的:
scaped.replaceAll("\\\\x", "\\\\u00")
然后使用上面答案中提到的任何方法来转换 unicode 转义字符串。使用 apachecommons-text
将类似于:
StringEscapeUtils.unescapeJava("123\\x20Fake\\x20St\\u002e"
.replaceAll("\\\\x", "\\\\u00")) // 123 Fake St.