CGI.escape和URLEncoder.encode结果不匹配

时间:2014-11-26 05:22:29

标签: java ruby cgi

我必须将ruby代码写入java。在此期间,我们编码一个哈希值。要在Ruby客户端中使用CGI.escape()方法,类似地我在java中使用了URLEncoder.encode()。但最终结果不匹配。

Ruby脚本部分:

    hash = "gFH6B8aN+yReGkBL2QS7X4O7d98="
    puts "hash: " + hash
    puts "escaped hash: " + CGI.escape(hash) 

Ruby输出:

   hash: gFH6B8aN+yReGkBL2QS7X4O7d98=
   escaped hash: gFH6B8aN%2ByReGkBL2QS7X4O7d98%3D%0A

Java代码:

 public static void main(String[] args)

{
    String hash = "gFH6B8aN+yReGkBL2QS7X4O7d98=";
    String encodedString = URLEncoder.encode(hash, "UTF-8");
    System.out.println("hash :" + hash);
    System.out.println("encodedString::" + encodedString);
}

Java输出:

 hash :gFH6B8aN+yReGkBL2QS7X4O7d98=
 encodedString::gFH6B8aN%2ByReGkBL2QS7X4O7d98%3D

正如您所看到的,Ruby结果附加了额外的%0A。请帮忙。

1 个答案:

答案 0 :(得分:0)

%0A表示换行符("\n")。

也许您从某些输入源(如用户输入或文件)获取了文本,并且需要chomp换行符?

hash = "gFH6B8aN+yReGkBL2QS7X4O7d98=\n"
puts "hash: " + hash
# => hash: gFH6B8aN+yReGkBL2QS7X4O7d98=
puts "escaped hash: " + CGI.escape(hash.chomp) 
# => escaped hash: gFH6B8aN%2ByReGkBL2QS7X4O7d98%3D