【问题标题】:Does php urlencode the same with java urlencode?php urlencode 和 java urlencode 一样吗?
【发布时间】:2012-04-17 07:39:11
【问题描述】:

在PHP中:

php -r "echo urlencode('["IM"]'); "  

结果是%5BIM%5D

但是在java中

String text = URLEncoder.encode('["IM"]',"UTF-8");
System.out.println("text" + text);

结果是text%5B%22IM%22%5D

这两个函数有什么不同?如何实现一个java代码来完成php的相同功能?

【问题讨论】:

    标签: java php urlencode encode


    【解决方案1】:
    String text = URLEncoder.encode('[IM]',"UTF-8");
    System.out.println("text" + text);
    

    %5BIM%5D

    echo urlencode('["IM"]');
    

    %5B%22IM%22%5D

    echo urlencode('[IM]');
    

    %5BIM%5D

    echo urlencode('[\"IM\"]');
    

    %5B%5C%22IM%5C%22%5D

    【讨论】:

    • 因为事实上我想编码一个 JSONArray.tostring()。所以原始字符串可能像['IM','game']。不能简单地删除'
    • 您真正想要的是哪个? %5B%22IM%22%5D%5BIM%5D 还是 %5B%5C%22IM%5C%22%5D[ 转义到 %5B] 转义到 %5D" 转义到 %22
    • 如果你想要的是["IM"]那么你原来的java代码是正确的。
    【解决方案2】:
    php -r "echo urlencode('["IM"]'); "
    

    结果是 %5BIM%5D,因为函数 urlencode 实际上只将字符串 [IM] 作为其输入。在java中

    String text = URLEncoder.encode('["IM"]',"UTF-8");
    

    传递的字符串实际上是:["IM"],它生成值%22,它是" 引号的编码字符串。

    【讨论】:

      【解决方案3】:

      尝试逃避内部 qoutes

      php -r "echo urlencode('[\"IM\"]'); "
      

      【讨论】:

      • 是一样的。但是我想要一个java代码。 php是别人写的。
      猜你喜欢
      • 1970-01-01
      • 2012-06-19
      • 2014-10-16
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 2016-06-23
      • 2010-11-03
      • 2011-09-10
      相关资源
      最近更新 更多