Java URL 编码器

2024 年 9 月 10 日 | 阅读 3 分钟

Java URLEncoder 是一个用于编码 URL(统一资源定位符)的实用类。通过 URL 编码可以确保可靠性和安全性。当用户通过 get 方法请求特定站点时,表单参数及其值会被添加到 URL 的 '?' 符号后面。然而,当值中包含特殊字符时,这些字符无法被正确解释,就会出现问题。通常情况下,HTML 会自动处理编码部分,通过处理特殊字符并将其转换为允许的字符,以确保所有操作都能顺利进行。但是,HTML 并不保证准确的编码,因此我们不能仅依赖 HTML 功能,需要使用 Java 的 URL Encoder 类来显式编码 URL。

在编码字符串时,遵循以下规则很重要:

  1. 字母字符 'a' 到 'z' 或 'A' 到 'Z' 以及数字 '0' 到 '9' 保持不变。
  2. 字母数字字符以及一些特殊字符,如 '*'、'_'、'-' 和 '.' 不会改变。
  3. 所有空格都转换为 '+' 号。
  4. W3C 建议使用 "UTF-8" 进行编码。所有其他字符都使用指定的编码方案进行一个或多个字节的编码。它们被转换为三字符格式 %xy,其中 xy 代表编码字符的十六进制表示。

示例 1

如果用户请求的参数值包含特殊字符和空格,例如:

u@Java T point

如果使用的编码是 UTF-8(最常用的编码),'@' 符号将转换为 '%40',空格将转换为 '+' 号。编码后的字符串如下:

u%40Java+T+Point

示例 2

如果用户请求的参数值不包含特殊字符和空格,例如:

u@JavaTpoint

编码后的字符串如下:

u%40JavaTPoint

编码 URL

为了编码 URL,Java URLEncoder 类提供了 encode() 方法。

URLEncoder.encode( )

该方法使用特定的编码方案将字符串转换为 application/x-www-form-url 编码格式。它使用提供的编码方案获取不安全字符的字节。

语法

注意:万维网联盟(W3C)建议使用 UTF-8 编码方案。否则,可能会导致各种不兼容问题。

参数

s: 要翻译的字符串。

enc: 支持的字符编码名称,例如 'UTF-8'。

返回: 返回翻译后的字符串。

抛出: 当命名的编码方案不支持时,抛出 UnsupportedEncodingException。

UrlEncoder.java

输出

URL without any encoding: 
https://tpointtech.cn/ u@ java T point
URL after encoding: 
https://tpointtech.cn/+u%40+java+T+point