我刚刚遇到了这样的事情:
String sample = "somejunk+%3cfoobar%3e+morestuff";
打印出来,样本如下:
一些垃圾+
<foobar
>+更多
这是如何运作的?U+003c 和 U+003e 分别是小于号和大于号的 Unicode 代码,这似乎不仅仅是巧合,但我从未听说过 Java 会自动执行这样的操作。我认为进入谷歌是一件容易的事,但事实证明谷歌不喜欢百分号。
我刚刚遇到了这样的事情:
String sample = "somejunk+%3cfoobar%3e+morestuff";
打印出来,样本如下:
一些垃圾+
<foobar
>+更多
这是如何运作的?U+003c 和 U+003e 分别是小于号和大于号的 Unicode 代码,这似乎不仅仅是巧合,但我从未听说过 Java 会自动执行这样的操作。我认为进入谷歌是一件容易的事,但事实证明谷歌不喜欢百分号。
该字符串可能是URL 编码的您可以使用URLDecoder在 java 中对其进行解码
String res = java.net.URLDecoder.decode(sample, "UTF8");
你可以做这样的事情,
String sample = "somejunk+%3cfoobar%3e+morestuff";
String result = URLDecoder.decode(sample.replaceAll("\\+", "%2B"), "UTF8");
Java 确实支持 Unicode 转义char
和String
文字,但不支持 URL 编码。
Unicode 转义使用'\uXXXX'
,其中 XXXX 是十六进制的 Unicode 点。
奇怪的花絮:语法允许'u'
多次出现,所以这'\uuuuuuuu0041'
是一个有效的 Unicode 转义(for 'A'
)。