【问题标题】:Urlencoding and toLowerCase - effect on outputUrlencoding 和 toLowerCase - 对输出的影响
【发布时间】:2015-06-22 13:56:13
【问题描述】:

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

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

  2. 字符串输出2 = URLEncoder.encode(plainString.toLowerCase(), "UTF-8"));

【问题讨论】:

  • 你为什么不试试呢?
  • @Sybren 像“abc”这样的简单字符可以正常工作,但我不确定两者都涵盖的字符范围。

标签: java url-encoding tolower


【解决方案1】:

第一个问题为什么要小写? URL 区分大小写。

回答您的问题 - 是的,会有不同。

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

现在,在您的这种情况下 - (URLEncoder.encode(plainString, "UTF-8")).toLowerCase() Hexa-decimal 值将转换为小写。

考虑下面的例子:

        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

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    结果可能不同:我用“Ü”(德语变音符号)试了一下,输出 1 是 %c3%9c 而输出 2 是 %C3%BC

    【讨论】:

      猜你喜欢
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      • 2021-08-06
      • 2020-02-18
      • 2014-05-06
      相关资源
      最近更新 更多