作者:jerry613 | 2023-09-03 20:00
使用时收到以下警告java.net.URLEncoder.encode
:
warning: [deprecation] encode(java.lang.String)
in java.net.URLEncoder has been deprecated
我应该用什么呢?
1> Will Wagner..:
使用URLEncoder中的其他encode
方法:
URLEncoder.encode(String, String)
第一个参数是要编码的文本; 第二个是要使用的字符编码的名称(例如UTF-8
).例如:
System.out.println(
URLEncoder.encode(
"urlParameterString",
java.nio.charset.StandardCharsets.UTF_8.toString()
)
);
然后你必须处理UnsupportedEncodingException,即使在任何地方都应该支持UTF-8.
@jsh:我很困惑,为什么不应该有一个URLDecoder?为什么这会让Java膨胀?这些是静态方法.输入任何一种都需要花费相同的努力.如果你喜欢Python,你为什么要用Java编程?是因为更多的人使用Java而不是Python而且你得到的是Java作业而不是Python作业?
他称之为臃肿,因为它占据了全局类命名空间.为什么有URLEncoder.encode和URLDecoder.decode,你可以有URL.encode和URL.decode,甚至只有URLEncoder.decode?为什么要把它全部多余和臃肿?因为它的java.
@tc.:Java 7引入了这些常量:`StandardCharsets.US_ASCII`,`StandardCharsets.UTF_8`等.不幸的是,`URLEncoder.encode`不接受`Charset` ...(但许多其他的方法都可以).
次要建议 - 使用`URLEncoder.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()`方法.
@stepanian是的,你得工作的地方.我通常使用的python包将所有这些编码和解码实用程序放在一个屋檐下.我主要添加了这个评论,因为我必须去找到URLDecoder,我认为它可能会节省几分钟,知道这是必需的.
2> Atul Darne..:
你应该使用:
URLEncoder.encode("NAME", "UTF-8");
3> Jorgesys..:
使用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 16位UCS转换格式,大端字节顺序
UTF-16LE 16位UCS转换格式,little-endian字节顺序
UTF-16 16位UCS转换格式,由可选的字节顺序标记标识的字节顺序
例:
import java.net.URLEncoder;
String stringEncoded = URLEncoder.encode(
"This text must be encoded! aeiou áéíóú ñ, peace!", "UTF-8");