【问题标题】:Automatic Unicode string formatting in JavaJava中的自动Unicode字符串格式化
【发布时间】:2009-09-16 14:43:45
【问题描述】:

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

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

打印出来,样本如下:

一些垃圾+<foobar>+更多

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

【问题讨论】:

  • Java 不会做这样的事情。看起来你有一个 URL 编码的字符串。
  • 是的,我猜你是在网页上看到的,而不是在实际编译的源文件中看到的 :-)
  • 你是如何打印出来的,如果标准输出到什么终端?

标签: java unicode string-formatting


【解决方案1】:

那个字符串可能是URL encoded,你可以在java中使用URLDecoder解码它

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

【讨论】:

    【解决方案2】:

    你可以这样做,

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

    【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 2011-02-20
      相关资源
      最近更新 更多