0

我刚刚遇到了这样的事情:

String sample = "somejunk+%3cfoobar%3e+morestuff";

打印出来,样本如下:

一些垃圾+ <foobar>+更多

这是如何运作的?U+003c 和 U+003e 分别是小于号和大于号的 Unicode 代码,这似乎不仅仅是巧合,但我从未听说过 Java 会自动执行这样的操作。我认为进入谷歌是一件容易的事,但事实证明谷歌不喜欢百分号。

4

3 回答 3

2

该字符串可能是URL 编码的您可以使用URLDecoder在 java 中对其进行解码

String res = java.net.URLDecoder.decode(sample, "UTF8");
于 2009-09-16T15:16:02.990 回答
1

你可以做这样的事情,

    String sample = "somejunk+%3cfoobar%3e+morestuff";
    String result = URLDecoder.decode(sample.replaceAll("\\+", "%2B"), "UTF8");
于 2009-09-16T15:05:27.950 回答
1

Java 确实支持 Unicode 转义charString文字,但不支持 URL 编码。

Unicode 转义使用'\uXXXX',其中 XXXX 是十六进制的 Unicode 点。

奇怪的花絮:语法允许'u'多次出现,所以这'\uuuuuuuu0041'是一个有效的 Unicode 转义(for 'A')。

于 2009-09-16T16:59:21.050 回答