213

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

警告:[弃用] 编码(java.lang.String)
         在 java.net.URLEncoder 已被弃用

我应该改用什么?

4

6 回答 6

301

使用URLEncoder中的其他encode方法:

URLEncoder.encode(String, String)

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

System.out.println(
  URLEncoder.encode(
    "urlParameterString",
    java.nio.charset.StandardCharsets.UTF_8.toString()
  )
);
于 2008-10-17T19:22:59.070 回答
37

你应该使用:

URLEncoder.encode("NAME", "UTF-8");
于 2013-11-28T05:54:57.037 回答
30

使用类URLEncoder

URLEncoder.encode(String s, String enc)

在哪里 :

s - 要翻译的字符串。

enc - 支持的字符编码的名称。

标准字符集:

US-ASCII 七位 ASCII,又名 ISO646-US,又名 Unicode 字符集 ISO-8859-1 的基本拉丁语块 ISO Latin Alphabet No. 1,又名 ISO-LATIN-1

UTF-8八位 UCS 转换格式

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

UTF-16LE 十六位 UCS 转换格式,little-endian 字节顺序

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

例子:

import java.net.URLEncoder;

String stringEncoded = URLEncoder.encode(
    "This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8");
于 2014-09-04T15:18:59.243 回答
1

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

于 2014-05-01T04:56:44.667 回答
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().

于 2019-10-23T23:23:36.263 回答
0

作为其他响应的附加参考,您可以使用以下命令,而不是使用“UTF-8” :

HTTP.UTF_8

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

于 2014-05-30T01:10:39.790 回答