【问题标题】:Java difference between two URL Encoded strings两个 URL 编码字符串之间的 Java 区别
【发布时间】:2011-08-22 16:53:31
【问题描述】:

以下两个编码字符串有什么区别?

%D0%9E%D0%BA%D0%B6%D1%8D%D0%B7

%26%231055%3B%26%231088%3B%26%231080%3B%26%231074%3B%26%231077%3B%26%231090%3B

我正在尝试将俄语文本“Привет” URL 编码为上面的第二个编码字符串(W3Schools encoder 正确),但我使用的 URL 编码器一直给我上面的第一个编码字符串。我正在使用来自 W3 联盟的URLUTF8Encoder.java。我必须使用这个,因为我正在开发一个需要 J2ME 的移动平台。

谢谢!

【问题讨论】:

    标签: java string encoding java-me utf-8


    【解决方案1】:

    w3schools 的 URL 编码器完全错误。 %D0%9E%D0%BA%D0%B6%D1%8D%D0%B7 完全有效。这也是我做的时候得到的结果

    String encoded = URLEncoder.encode("Привет", "UTF-8");
    

    当我对 w3schools 的答案进行 URL 解码时,如下所示

    String decoded = URLDecoder.decode("%26%231055%3B%26%231088%3B%26%231080%3B%26%231074%3B%26%231077%3B%26%231090%3B", "UTF-8");
    

    然后我得到Привет,它们正是那些俄罗斯字符,然后先转换为XML entities

    顺便说一句,w3schools 网站与 W3 Consortium 没有任何关系。另见w3fools

    【讨论】:

    • 感谢 w3fools 的链接!
    【解决方案2】:

    你的字符串“Привет”被编码为:

    %D0%9E    
    %D0%BA
    %D0%B6
    %D1%8D
    %D0%B7
    

    第二个字符串好像是在url-encoding之前转换成HTML实体的:

    %26%231055%3B
    %26%231088%3B
    %26%231080%3B
    %26%231074%3B
    %26%231077%3B
    %26%231090%3B
    

    %26&%23#%3B;

    П
    р
    и
    в
    е
    т
    

    【讨论】:

      猜你喜欢
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      相关资源
      最近更新 更多