【发布时间】:2013-05-19 10:48:20
【问题描述】:
我有一个这样的字符串
"\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"))
谢谢大家的回复 :) 尤其是里卡多 Cacheira
谢谢
【问题讨论】:
-
this 可能有帮助吗?
标签: java string unicode encoding