Answers:
使用URLEncoder中的其他encode
方法:
URLEncoder.encode(String, String)
第一个参数是要编码的文本。第二个是要使用的字符编码的名称(例如UTF-8
)。例如:
System.out.println(
URLEncoder.encode(
"urlParameterString",
java.nio.charset.StandardCharsets.UTF_8.toString()
)
);
StandardCharsets.US_ASCII
,StandardCharsets.UTF_8
等等。不幸的是,URLEncoder.encode
它不接受Charset
...(但是许多其他方法都接受)。
URLEncoder.encode(<urlStringToBeEncoded>, StandardCharsets.UTF_8.name())
。使用静态常量UTF_8
的toString()
方法作为字符编码方案时,将抛出“ java.nio.charset.CharsetICU [UTF-8]” java.nio.charset.IllegalCharsetNameException: java.nio.charset.CharsetICU[UTF-8]
作为toString()
返回值。要获得所需的“ UTF-8”,请改用其name()
方法。
您应该使用:
URLEncoder.encode("NAME", "UTF-8");
使用类URLEncoder:
URLEncoder.encode(String s, String enc)
哪里:
s-要转换的字符串。
enc-支持的字符编码的名称。
标准字符集:
US-ASCII 七位ASCII,又名ISO646-US,又名Unicode字符集的基本拉丁字块ISO-8859-1 ISO拉丁字母1号,又名ISO-LATIN-1
UTF-8八位UCS转换格式
UTF-16BE 十六位UCS转换格式,大端字节顺序
UTF-16LE 十六位UCS转换格式,小尾数字节顺序
UTF-16十六位UCS转换格式,字节顺序由可选的字节顺序标记标识
例:
import java.net.URLEncoder;
String stringEncoded = URLEncoder.encode(
"This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8");
作为其他响应的补充参考,可以使用以下代替使用“ UTF-8”:
HTTP.UTF_8
从Java 4开始就包含在org.apache.http.protocol库中,而从Android API 1开始也包含了该库。
org.apache.http.protocol.HTTP
类中找到。
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()
。