2009-09-16 106 views
0
格式

我只是碰到东西就这样的:自动Unicode字符串在Java中

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

打印出来,样品看起来是这样的:

somejunk + <foobar> + morestuff

如何那样有用吗? U + 003c和U + 003e分别是小于和大于符号的Unicode代码,这似乎不只是一个巧合,但我从来没有听说过Java会自动执行这样的事情。我认为将它流入Google很容易,但事实证明Google不喜欢百分号。

+2

Java不会这样做。它看起来像你有一个URL编码的字符串。 – 2009-09-16 14:45:25

+0

是的,我猜你看到它在网页上,而不是在实际编译的源文件:-) – 2009-09-16 14:48:23

+0

你打印出来,如果stdout到什么终端? – Mark 2009-09-16 14:49:05

回答

1

你可以做这样的事情,

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

原来这很接近,实际上它在我的情况下被用作Wicket ExternalLink。 (http://wicket.apache.org/docs/1.4/org/apache/wicket/markup/html/link/ExternalLink.html) – Pops 2009-09-16 18:27:31

1

Java并支持Unicode的charString文字逃脱解码,在Java中,但不是URL编码。

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

好奇珍闻:文法允许'u'发生多次,因此'\uuuuuuuu0041'是有效的Unicode转义(对于'A')。

+0

+1为好奇的珍闻。 – Pops 2009-09-16 18:14:48