Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不推荐使用java.net.URLEncoder.encode(字符串),我应该使用什么来代替?_Java_Url_Network Programming_Deprecated - Fatal编程技术网

不推荐使用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() );