java通过unicode_escape解码的方法

标签 java python parsing string-decoding

Python 有一个很好的函数来解码字符串中的十六进制和 unicode 字符,如下所示:

print "123\x20Fake\x20St\u002e".decode('unicode_escape')

将打印:

123 Fake St.

java中是否有类似的东西,或者这是必须用正则表达式处理的东西?

编辑 1

我相信我的问题与 this one 不同因为看起来这个问题要求解码仅十六进制的字符串。我的是混合的。

最佳答案

如果您尝试使用该字符串,您将收到错误,因为 \x 不是 valid scape character 。您可以使用将 \x 替换为 \u00 的 unicode 形式,也可以使用不带任何前面字符的八进制形式。

统一码:

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

您可以看到 this answer 转换转义的 unicodes 字符,但您必须先处理十六进制,并且可以将 \x 替换为 \u00 ,例如前面提到过:

scaped.replaceAll("\\\\x", "\\\\u00")

然后使用上面答案中提到的任何方法来转换 unicode 转义字符串。使用 apache commons-text 会是这样的:

StringEscapeUtils.unescapeJava("123\\x20Fake\\x20St\\u002e"
        .replaceAll("\\\\x", "\\\\u00")) // 123 Fake St.

关于java通过unicode_escape解码的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49502889/

相关文章:

android - 解析 XML HttpResponse

javascript - 将字符串转换为js映射

c# - 无法识别 DateTime.parse 字符串

python - 在 Mac 上构建 Python 库并遇到平面命名空间错误

Python 从 CSV 创建字典并使用文件名作为键

java - 介绍使用java构建计算机的cs类(class)

java - 如何查找String是否包含html数据?

java - 从非英语网站获取纯文本内容

java - 想法 "Groovyc: unable to resolve class"- 在命令行上工作

java - 了解日历时间,需要澄清