当使用java.net.URLEncoder.encode时,我得到以下警告:

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

我应该用什么代替呢?


当前回答

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

其他回答

使用URLEncoder中的其他编码方法:

URLEncoder.encode(String, String)

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

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

你应该使用:

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

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

严格来说,使用org.apache.commons.httpclient.URI并不是一个问题;问题是您瞄准了错误的构造函数,这是被贬低的。

仅使用

new URI( [string] );

确实会标记为贬值。所需要的是提供至少一个额外的参数(下面的第一个),最好是两个:

如果URI字符序列是转义形式,则为true。否则错误。 字符集:用于转义编码的字符集字符串,如果 要求

这将针对该类中的非折损构造函数。所以理想的用法是这样的:

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

在游戏的后期有点疯狂(11年多之后——天啊!),但我希望这对其他人有所帮助,特别是如果远端的方法仍然期望一个URI,例如org.apache.commons.httpclient.setURI()。

作为其他响应的额外参考,而不是使用“UTF-8”,您可以使用:

HTTP。UTF_8

它从Java 4开始就被包含在org.apache.http.protocol库中,它也从Android API 1开始被包含。