Java Java类
此类是用于 HTML 表单编码的实用程序类。编码使 URL 的形式更加可靠和安全。当用户请求由 get 方法触发时,表单参数及其值会附加在 URL 末尾的“?”之后符号。当特殊字符用于它们的值时,就会出现问题。一般情况下,HTML会处理编码部分并自动处理特殊字符并将其转换为特殊字符,以便顺利处理所有操作。然而,仅仅依赖 HTML 特性并不是一个好习惯,因此Java提供了这个类来显式地对 URL 进行编码。
编码字符串时使用以下规则:
- 字母数字字符和某些特殊字符,例如' * '、' _ '、' - '和' 。 ' 保持不变。
- 空格转换为“ + ”号。
- 所有其他字符都使用指定的编码方案由一个或多个字节编码。它们被转换为%xy形式的三个字符,其中 xy 表示编码字符串的十六进制字符。 W3C 建议使用“UTF-8”进行编码。
例如,如果我们有包含特殊字符和空格的参数值作为
u@geeks for geeks
如果使用的编码是最常用的 UTF-8,@ 符号将转换为 %40,空格将转换为 + 符号,我们的编码字符串将如下所示 -
u%40geeks+for+geeks
方法 :
- encode() :这是此类提供的一个也是唯一的方法。顾名思义,它返回指定字符串。现在不推荐使用的一种方法只有一个参数,即要编码的字符串。它不允许您指定要使用的编码并使用平台默认编码。另一个版本允许使用编码规范,因此被广泛使用。
Syntax :public static String encode(String s) - @Deprecated Parameters : s : String to be encoded
Syntax :public static String encode(String s, String enc) throws UnsupportedEncodingException Parameters : s : string to be encoded enc : encoding to be used Throws : UnsupportedEncodingException : If the specified encoding is not used
Java实现:
// Java program to show encode() method of
// URLEncoder class
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
public class UrlEncoder
{
public static void main(String[] args) throws MalformedURLException,
UnsupportedEncodingException
{
// base URL
String baseurl = "https://www.geeksforgeeks.org/?q=";
// String to be encoded
String query = "u@geeks for geeks";
System.out.println("URL without encoding :");
URL url = new URL(baseurl + query);
System.out.println(url);
// encode() method
System.out.println("URL after encoding :");
url = new URL(baseurl + URLEncoder.encode(query, "UTF-8"));
System.out.println(url);
}
}
输出 :
URL without encoding :
https://www.geeksforgeeks.org/?q=u@geeks for geeks
URL after encoding :
https://www.geeksforgeeks.org/?q=u%40geeks+for+geeks