📜  Java Java类

📅  最后修改于: 2022-05-13 01:55:41.803000             🧑  作者: Mango

Java Java类

此类是用于 HTML 表单编码的实用程序类。编码使 URL 的形式更加可靠和安全。当用户请求由 get 方法触发时,表单参数及其值会附加在 URL 末尾的“?”之后符号。当特殊字符用于它们的值时,就会出现问题。一般情况下,HTML会处理编码部分并自动处理特殊字符并将其转换为特殊字符,以便顺利处理所有操作。然而,仅仅依赖 HTML 特性并不是一个好习惯,因此Java提供了这个类来显式地对 URL 进行编码。
编码字符串时使用以下规则:

  1. 字母数字字符和某些特殊字符,例如' * '、' _ '、' - '和' ' 保持不变。
  2. 空格转换为“ + ”号。
  3. 所有其他字符都使用指定的编码方案由一个或多个字节编码。它们被转换为%xy形式的三个字符,其中 xy 表示编码字符串的十六进制字符。 W3C 建议使用“UTF-8”进行编码。

例如,如果我们有包含特殊字符和空格的参数值作为

u@geeks for geeks

如果使用的编码是最常用的 UTF-8,@ 符号将转换为 %40,空格将转换为 + 符号,我们的编码字符串将如下所示 -

u%40geeks+for+geeks

方法 :

  1. 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