什么类型的字符串使用前缀\ x以及如何读取它

use*_*809 6 java string unicode encoding

我有这样的字符串

"\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL"
Run Code Online (Sandbox Code Playgroud)

当我把它放在浏览器控制台时,它会自动成为其他东西:

"\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL"
"'ö,úìHL"
Run Code Online (Sandbox Code Playgroud)

如果我做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)
"ö"
Run Code Online (Sandbox Code Playgroud)

这就是我想要的.

现在我想实现一个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'
Run Code Online (Sandbox Code Playgroud)

这个字符串编码的编码类型是什么?什么样的编码使用前缀\x?有没有办法正确读取它(获得与浏览器相同的结果)?

更新:我找到了一个解决方案 - >我想这不是最好的,但它对我有用:

StringEscapeUtils.unescapeJava("\\x27\\x18\\xf6,\\x03\\x12\\x8e\\xfa\\xec\\x11\\x0dHL".replace("\\x", "\\u00"))
Run Code Online (Sandbox Code Playgroud)

谢谢大家的回复:)特别是Ricardo Cacheira

谢谢

Ric*_*ira 9

\x03 是char的ASCII十六进制值

所以这个:"\x30\x31"和以下一样:"01"

看到那个页面:http://www.asciitable.com

另一件事是当你复制你的字符串而没有引号时你的IDE会将其转换\\\

Java的字符串使用Unicode转义所以这一点:"\x30\0x31"在Java中:"\u0030\u0031";

你不能在Java String中使用这些转义序列,\u000a AND \u000d你应该将它们分别转换为\r AND \n

所以这"\u0027\u0018\u00f6,\u0003\u0012\u008e\u00fa\u00ec\u0011\rHL"是Java的转换:"\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL"