Class RFC2231Utils

java.lang.Object
org.apache.commons.fileupload2.core.RFC2231Utils

final class RFC2231Utils extends Object
Utility class to decode/encode character set on HTTP Header fields based on RFC 2231. This implementation adheres to RFC 5987 in particular, which was defined for HTTP headers

RFC 5987 builds on RFC 2231, but has lesser scope like mandatory charset definition and no parameter continuation

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final byte[]
    The Hexadecimal decode value.
    private static final char[]
    The Hexadecimal values char array.
    private static final byte
    The Hexadecimal representation of 127.
    private static final int
    The Hexadecimal representation of 128.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
    Private constructor so that no instances can be created.
  • Method Summary

    Modifier and Type
    Method
    Description
    (package private) static String
    decodeText(String encodedText)
    Decodes a string of text obtained from a HTTP header as per RFC 2231 Eg 1. us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A will be decoded to This is ***fun*** Eg 2. iso-8859-1'en'%A3%20rate will be decoded to £ rate.
    private static byte[]
    Converts text to their corresponding Hex value.
    private static String
    getJavaCharset(String mimeCharset)
     
    (package private) static boolean
    Tests if asterisk (*) at the end of parameter name to indicate, if it has charset and language information to decode the value.
    (package private) static String
    If paramName has Asterisk (*) at the end, it will be stripped off, else the passed value will be returned.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • HEX_DIGITS

      private static final char[] HEX_DIGITS
      The Hexadecimal values char array.
    • MASK

      private static final byte MASK
      The Hexadecimal representation of 127.
      See Also:
    • MASK_128

      private static final int MASK_128
      The Hexadecimal representation of 128.
      See Also:
    • HEX_DECODE

      private static final byte[] HEX_DECODE
      The Hexadecimal decode value.
  • Constructor Details

    • RFC2231Utils

      private RFC2231Utils()
      Private constructor so that no instances can be created. This class contains only static utility methods.
  • Method Details

    • decodeText

      static String decodeText(String encodedText) throws UnsupportedEncodingException
      Decodes a string of text obtained from a HTTP header as per RFC 2231 Eg 1. us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A will be decoded to This is ***fun*** Eg 2. iso-8859-1'en'%A3%20rate will be decoded to £ rate. Eg 3. UTF-8''%c2%a3%20and%20%e2%82%ac%20rates will be decoded to £ and € rates.
      Parameters:
      encodedText - - Text to be decoded has a format of <charset>'<language>'<encoded_value> and ASCII only
      Returns:
      Decoded text based on charset encoding
      Throws:
      UnsupportedEncodingException - The requested character set wasn't found.
    • fromHex

      private static byte[] fromHex(String text)
      Converts text to their corresponding Hex value.
      Parameters:
      text - - ASCII text input
      Returns:
      Byte array of characters decoded from ASCII table
    • getJavaCharset

      private static String getJavaCharset(String mimeCharset)
    • hasEncodedValue

      static boolean hasEncodedValue(String paramName)
      Tests if asterisk (*) at the end of parameter name to indicate, if it has charset and language information to decode the value.
      Parameters:
      paramName - The parameter, which is being checked.
      Returns:
      true, if encoded as per RFC 2231, false otherwise
    • stripDelimiter

      static String stripDelimiter(String paramName)
      If paramName has Asterisk (*) at the end, it will be stripped off, else the passed value will be returned.
      Parameters:
      paramName - The parameter, which is being inspected.
      Returns:
      stripped paramName of Asterisk (*), if RFC2231 encoded