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
谢谢
\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"
| 归档时间: |
|
| 查看次数: |
6655 次 |
| 最近记录: |