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