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

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

打印出来,样本看起来像这样:

  

somejunk + <foobar GT <!> + morestuff

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

有帮助吗?

解决方案

你可以这样做,

    String sample = "somejunk+%3cfoobar%3e+morestuff";
    String result = URLDecoder.decode(sample.replaceAll("\\+", "%2B"), "UTF8");

其他提示

该字符串可能是 URL编码您在java中使用 URLDecoder

String res = java.net.URLDecoder.decode(sample, "UTF8");

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

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

好奇的花絮:语法允许'u'多次出现,因此'\uuuuuuuu0041'是有效的Unicode转义(对于'A')。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top