Urlencoding和toLowerCase - 影响输出

时间:2015-06-22 13:56:14

标签: java url-encoding tolower

我通过这段代码(java),并想知道下面两个是否会在输出中有任何实际差异:

  1. String output1 =(URLEncoder.encode(plainString,“UTF-8”))。toLowerCase();

  2. String output2 = URLEncoder.encode(plainString.toLowerCase(),“UTF-8”));

2 个答案:

答案 0 :(得分:3)

第一个问题你为什么要做小写?网址区分大小写。

回答您的问题 - 是的,会有差异。

使用UTF-8作为编码方案,字符串“Thestringü@ foo-bar”将转换为“The + string +%C3%BC%40foo-bar”,因为在UTF-8中,字符ü被编码为两个字节C3(十六进制)和BC(十六进制),字符@编码为一个字节40(十六进制)。

现在,在这种情况下 - (URLEncoder.encode(plainString, "UTF-8")).toLowerCase()六进制十进制值将转换为小写。

请考虑以下示例:

        String output1 = (URLEncoder.encode("ü@foo-Bar", "UTF-8")).toLowerCase();
        String output2 = URLEncoder.encode("ü@foo-Bar".toLowerCase(), "UTF-8");
        System.out.println(output1);
        System.out.println(output2);

输出:

%c3%bc%40foo-bar
%C3%BC%40foo-bar

希望这有帮助!

答案 1 :(得分:1)

结果可能有所不同:我尝试使用“Ü”(德语变音符号),输出1为%c3%9c,而输出2为%C3%BC