Class PercentCodec

java.lang.Object
org.miaixz.bus.core.codec.PercentCodec
All Implemented Interfaces:
Serializable, Encoder<byte[],byte[]>

public class PercentCodec extends Object implements Encoder<byte[],byte[]>, Serializable
百分号编码(Percent-encoding), 也称作URL编码(URL encoding)。 百分号编码可用于URI的编码,也可以用于"application/x-www-form-urlencoded"的MIME准备数据。

百分号编码会对 URI 中不允许出现的字符或者其他特殊情况的允许的字符进行编码,对于被编码的字符,最终会转为以百分号"%“开头,后面跟着两位16进制数值的形式。 举个例子,空格符(SP)是不允许的字符,在 ASCII 码对应的二进制值是"00100000”,最终转为"%20"。

对于不同场景应遵循不同规范:

  • URI:遵循RFC 3986保留字规范
  • application/x-www-form-urlencoded,遵循W3C HTML Form content types规范,如空格须转+
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Constructor Details

    • PercentCodec

      public PercentCodec()
      构造 [a-zA-Z0-9]默认不被编码
    • PercentCodec

      public PercentCodec(BitSet safeCharacters)
      构造
      Parameters:
      safeCharacters - 安全字符,安全字符不被编码
  • Method Details

    • isSafe

      public boolean isSafe(char c)
      检查给定字符是否为安全字符
      Parameters:
      c - 字符
      Returns:
      true表示安全,否则非安全字符
    • encode

      public byte[] encode(byte[] bytes)
      Description copied from interface: Encoder
      执行编码
      Specified by:
      encode in interface Encoder<byte[],byte[]>
      Parameters:
      bytes - 被编码的数据
      Returns:
      编码后的数据
    • encode

      public String encode(CharSequence path, Charset charset, char... customSafeChar)
      将URL中的字符串编码为%形式
      Parameters:
      path - 需要编码的字符串
      charset - 编码, null返回原字符串,表示不编码
      customSafeChar - 自定义安全字符
      Returns:
      编码后的字符串