Java中的自动Unicode字符串格式
-
07-07-2019 - |
题
我刚刚遇到过这样的事情:
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确实支持char
和String
文字中的Unicode转义,但不支持URL编码。
Unicode转义使用'\uXXXX'
,其中XXXX是十六进制的Unicode点。
好奇的花絮:语法允许'u'
多次出现,因此'\uuuuuuuu0041'
是有效的Unicode转义(对于'A'
)。
不隶属于 StackOverflow