使用java.net.URLEncoder.encode
时收到以下警告:
warning: [deprecation] encode(java.lang.String) in java.net.URLEncoder has been deprecated
我应该使用什么?
答案 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] );
确实会将其标记为已折旧。所需要的是至少提供一个额外的参数(下面是第一个参数),理想情况下是两个:
escaped
:如果URI字符序列为转义形式,则为true。否则为假。charset
:要进行转义编码的字符集字符串,如果
必填这将针对该类中未折旧的构造函数。因此理想的用法是这样的:
new URI( [string], true, StandardCharsets.UTF_8.toString() );
游戏中有些疯狂(11年后才出现头发- egad!),但是我希望这对其他人有帮助,尤其是如果远端的方法是仍然期待URI,例如org.apache.commons.httpclient.setURI()
。