我有一个这样的字符串
"\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL"
当我把它放在浏览器控制台中时,它会自动变成别的东西:
"\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL"
"'ö,úìHL"
如果我chatAt(x)
对这个字符串进行处理,我会得到:
"\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL".charAt(0)
"'"
"\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL".charAt(1)
""
"\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL".charAt(2)
"ö"
这就是我想要的。
现在我想实现一个 Java 程序,它以与浏览器中相同的方式读取字符串。
问题是,Java 无法识别此字符串的编码方式。相反,它将其视为普通字符串:
"\\x27\\x18\\xf6,\\x03\\x12\\x8e\\xfa\\xec\\x11\\x0dHL".charAt(0) == '\'
"\\x27\\x18\\xf6,\\x03\\x12\\x8e\\xfa\\xec\\x11\\x0dHL".charAt(1) == 'x'
"\\x27\\x18\\xf6,\\x03\\x12\\x8e\\xfa\\xec\\x11\\x0dHL".charAt(2) == '2'
这个字符串是用什么样的编码编码的?什么样的编码使用前缀\x
?有没有办法正确阅读它(获得与浏览器相同的结果)?
更新:我找到了一个解决方案-> 我想这不是最好的,但它对我有用:
StringEscapeUtils.unescapeJava("\\x27\\x18\\xf6,\\x03\\x12\\x8e\\xfa\\xec\\x11\\x0dHL".replace("\\x", "\\u00"))
谢谢大家的回复:)尤其是里卡多·卡西拉(Ricardo Cacheira)
谢谢