不推荐使用java.net.URLEncoder.encode(String),我应该使用什么呢?

时间:2008-10-17 19:19:40

标签: java url network-programming deprecated

使用java.net.URLEncoder.encode时收到以下警告:

warning: [deprecation] encode(java.lang.String)
         in java.net.URLEncoder has been deprecated

我应该使用什么?

6 个答案:

答案 0 :(得分:261)

使用URLEncoder中的其他encode方法:

URLEncoder.encode(String, String)

第一个参数是要编码的文本;第二个是要使用的字符编码的名称(例如,UTF-8)。例如:

System.out.println(
  URLEncoder.encode(
    "urlParameterString",
    java.nio.charset.StandardCharsets.UTF_8.toString()
  )
);

答案 1 :(得分:26)

您应该使用:

URLEncoder.encode("NAME", "UTF-8");

答案 2 :(得分:20)

使用课程URLEncoder

URLEncoder.encode(String s, String enc)

其中:

  

s - 要翻译的字符串。

     

enc - 受支持的character encoding的名称。

标准字符集:

  

US-ASCII 七位ASCII,a.k.a。ISO646-US,a.k.a。Unicode字符集的Basic Latin块   ISO-8859-1 ISO拉丁字母第1号,a.k.a。ISO-LATIN-1

     

UTF-8 八位UCS转换格式

     

UTF-16BE 16位UCS转换格式,大端字节顺序

     

UTF-16LE 16位UCS转换格式,小端字节顺序

     

UTF-16 16位UCS转换格式,由可选字节顺序标记标识的字节顺序

示例:

import java.net.URLEncoder;

String stringEncoded = URLEncoder.encode(
    "This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8");

答案 3 :(得分:1)

第一个参数是要编码的String;第二个是要使用的字符编码的名称(例如,UTF-8)。

答案 4 :(得分:1)

作为其他回复的附加参考,您可以使用“UTF-8”,而不是

HTTP.UTF_8

自Java 4以来作为org.apache.http.protocol库的一部分包含在内,该库自Android API 1开始也包含在内。

答案 5 :(得分:1)

严格来说,org.apache.commons.httpclient.URI的使用不是问题。问题是您定位了错误的 折旧的构造函数。

仅使用

new URI( [string] );

确实会将其标记为已折旧。所需要的是至少提供一个额外的参数(下面是第一个参数),理想情况下是两个:

  1. escaped:如果URI字符序列为转义形式,则为true。否则为假。
  2. charset:要进行转义编码的字符集字符串,如果 必填

这将针对该类中未折旧的构造函数。因此理想的用法是这样的:

new URI( [string], true, StandardCharsets.UTF_8.toString() );

游戏中有些疯狂(11年后才出现头发- egad!),但是我希望这对其他人有帮助,尤其是如果远端的方法是仍然期待URI,例如org.apache.commons.httpclient.setURI()