我必须将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。请帮忙。
答案 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