不推荐使用java.net.URLEncoder.encode(字符串),我应该使用什么来代替?
使用不推荐使用java.net.URLEncoder.encode(字符串),我应该使用什么来代替?,java,url,network-programming,deprecated,Java,Url,Network Programming,Deprecated,使用java.net.URLEncoder.encode时,我收到以下警告: warning: [deprecation] encode(java.lang.String) in java.net.URLEncoder has been deprecated 警告:[弃用]编码(java.lang.String) 在java.net.URLEncoder中,已弃用 我应该用什么来代替呢?使用以下中的另一种编码方法: 第一个参数是要编码的文本;第二个是要使用的字符编码的名称(例如
java.net.URLEncoder.encode
时,我收到以下警告:
warning: [deprecation] encode(java.lang.String)
in java.net.URLEncoder has been deprecated
警告:[弃用]编码(java.lang.String)
在java.net.URLEncoder中,已弃用
我应该用什么来代替呢?使用以下中的另一种
编码方法:
第一个参数是要编码的文本;第二个是要使用的字符编码的名称(例如,UTF-8
)。例如:
System.out.println(
URLEncoder.encode(
"urlParameterString",
java.nio.charset.StandardCharsets.UTF_8.toString()
)
);
你应使用:
URLEncoder.encode("NAME", "UTF-8");
第一个参数是要编码的字符串;第二个是要使用的字符编码的名称(例如UTF-8)。作为其他响应的附加参考,而不是使用“UTF-8”,您可以使用:
HTTP.UTF_8
它是从Java 4开始作为org.apache.http.protocol库的一部分包含的,它也是从Android API 1开始包含的。使用类:
其中:
s-要翻译的字符串
enc-受支持文件的名称
标准字符集:
import java.net.URLEncoder;
String stringEncoded = URLEncoder.encode(
"This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8");
US-ASCII七位ASCII,也称ISO646-US,也称为Unicode字符集的基本拉丁块
ISO-8859-1 ISO拉丁字母表1,又称ISO拉丁字母表1
UTF-8八位UCS转换格式
UTF-16BE十六位UCS转换格式,大端字节顺序
UTF-16LE十六位UCS转换格式,小尾端字节顺序
UTF-1616位UCS转换格式,由可选字节顺序标记标识的字节顺序
示例:
import java.net.URLEncoder;
String stringEncoded = URLEncoder.encode(
"This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8");
严格来说,org.apache.commons.httpclient.URI的使用不是一个问题;问题是,您的目标是错误的构造函数,它被折旧了
仅使用
new URI( [string] );
确实会将其标记为已贬值。所需的是至少提供一个附加参数(第一个,如下),理想情况下提供两个:
转义
:如果URI字符序列为转义形式,则为true。否则就错了
charset
:进行转义编码的字符集字符串,如果
必需的
这将针对该类中未折旧的构造函数。因此,理想的用法是:
new URI( [string], true, StandardCharsets.UTF_8.toString() );
游戏后期有点疯狂(11年后的头发-egad!),但我希望这对其他人有所帮助,特别是如果远端的方法仍然需要URI,例如org.apache.commons.httpclient.setURI()
这在文档中的弃用标签中得到了回答:“相反,使用encode(String,String)方法指定编码。“请参阅。@jsh:我很困惑,为什么不应该有一个URL解码器?为什么这会让Java变得臃肿?这些都是静态方法。这两种方法都需要同样的努力。如果你喜欢Python,为什么要用Java编程?是因为使用Java的人比使用Python的人多,而你得到的是Java工作而不是Python工作吗?他称之为臃肿,因为它使全局类名称空间过多。既然可以有URL.encode和URL.decode,甚至可以只有URLEncoder.decode,为什么还要有URLEncoder.encode和urlendecoder.decode?为什么要让它变得多余和臃肿?因为它是java。然后您必须处理不受支持的编码异常,即使UTF-8应该在几乎所有地方都得到支持。@tc.:java 7引入了以下常量:StandardCharsets.US\u ASCII
,StandardCharsets.UTF\u 8
等等。不幸的是,urlcoder.encode
不接受Charset
。。。(但许多其他方法都可以)。小建议-使用urlcoder.encode(,StandardCharsets.UTF_8.name())
。使用静态常量UTF_8
的toString()
方法作为字符编码方案抛出java.nio.charset.IllegalCharsetNameException:java.nio.charset.CharsetICU[UTF-8]
作为toString()
返回“java.nio.charset.CharsetICU[UTF-8]”。要获得所需的“UTF-8”,请使用其name()
方法。错误,该类位于Apache HttpClient 4.x库org.Apache.http.protocol.http
类中。@BuhakeSindi true,我读过API 1,但它是Android而非Java的,在Java 7之前存在,它甚至已经被弃用了。不,这个类在任何版本的JavaJDK中都不存在。Android遵循ApacheHttpClient库(如果他们也从中获取了源代码,我不会感到惊讶)。警告:[不推荐使用]HTTP中的UTF_8已被不推荐使用。
new URI( [string], true, StandardCharsets.UTF_8.toString() );