gpt4 book ai didi

java - 为什么没有 URLEncoder.encode(String, Charset), URLDecoder.decode(String, Charset)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:51:49 31 4
gpt4 key购买 nike

<分区>

我不确定 SOF 是否是问这个问题的最佳地点,但关于 java URLEncoder 的一些事情和 URLDecoder .

对于 URLEncoder,它有 encode(String, String) 方法,其中第二个参数是要使用的编码名称。如果编码无效,则抛出 UnsupportedEncodingException。它是一个已检查的异常,因此在调用encode() 时必须使用try-catch 语句。这在使用字符串编码方面是有意义的......

但是 Java 有 Charset内置类,您可以使用 Java's StandardCharsets 轻松访问您喜欢的编码的 Charset 对象或 Guava's Charsets .如果您向 encode() 提供一个正确拼写的编码名称,这将避免需要捕获您知道永远不会抛出的异常。如果不能使用像 URLEncoder.encode(String, Charset) 这样的方法,我写的代码会变得非常难看,因为我需要存储一个额外的 String 变量来存储编码名称,而且我有一个漂亮的多余的 try-catch 语句,像这样:

private static final String utf8 = "UTF-8";
...
String msg = ...;
try {
String encodedMsg = URLEncoder.encode(msg, utf8);
...
} catch (UnsupportedEncodingException e) {
// This exception should never happen
System.err.println("Uh oh...");
}

同样的逻辑适用于 URLDecoder.decode(String, String)

因此,我只是想知道,为什么 Java 没有 URLEncoder.encode(String, Charset) 也没有 URLDecoder.decode(String, Charset)? Java 语言的开发人员是否有计划支持它?它会将我上面写的多行怪兽变成一个更令人愉快的单行代码,不需要我捕获异常,我知道除非政府将 UTF-8 定为犯罪,否则永远不会发生。是否有任何现有的实现或库可以改进 URLEncoder 和 URLDecoder 缺少的功能?我尝试在 Guava 中搜索某些内容,但一无所获。

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com