2009-09-16 32 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