⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmlencoderutil.java

📁 swing编写的库存管理程序。毕业设计类
💻 JAVA
字号:
/**
 * ========================================
 * JFreeReport : a free Java report library
 * ========================================
 *
 * Project Info:  http://www.jfree.org/jfreereport/index.html
 * Project Lead:  Thomas Morgner;
 *
 * (C) Copyright 2000-2003, by Simba Management Limited and Contributors.
 *
 * This library is free software; you can redistribute it and/or modify it under the terms
 * of the GNU Lesser General Public License as published by the Free Software Foundation;
 * either version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License along with this
 * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 * Boston, MA 02111-1307, USA.
 *
 * ------------------------------
 * HtmlEncoderUtil.java
 * ------------------------------
 * (C)opyright 2003, by Thomas Morgner and Contributors.
 *
 * Original Author:  Thomas Morgner;
 * Contributor(s):   David Gilbert (for Simba Management Limited);
 *
 * $Id: HtmlEncoderUtil.java,v 1.5 2003/08/25 14:29:32 taqua Exp $
 *
 * Changes
 * -------------------------
 * 25-Jul-2003 : Initial version
 *
 */

package org.jfree.report.modules.output.table.html;

/**
 * Utility methods to support HTML style encodings like the UTF and
 * CSS encodings.
 *
 * @author Thomas Morgner
 */
public final class HtmlEncoderUtil
{
  /**
   * DefaultConstructor.
   *
   */
  private HtmlEncoderUtil()
  {
  }

  /**
   * Provides a method to encode any string into a URL-safe form.
   * Non-ASCII characters are first encoded as sequences of two or three bytes, using the
   * UTF-8 algorithm, before being encoded as %HH escapes.
   */
  private static final String[] HEX_URL_ENCODING = {
    "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07",
    "%08", "%09", "%0a", "%0b", "%0c", "%0d", "%0e", "%0f",
    "%10", "%11", "%12", "%13", "%14", "%15", "%16", "%17",
    "%18", "%19", "%1a", "%1b", "%1c", "%1d", "%1e", "%1f",
    "%20", "%21", "%22", "%23", "%24", "%25", "%26", "%27",
    "%28", "%29", "%2a", "%2b", "%2c", "%2d", "%2e", "%2f",
    "%30", "%31", "%32", "%33", "%34", "%35", "%36", "%37",
    "%38", "%39", "%3a", "%3b", "%3c", "%3d", "%3e", "%3f",
    "%40", "%41", "%42", "%43", "%44", "%45", "%46", "%47",
    "%48", "%49", "%4a", "%4b", "%4c", "%4d", "%4e", "%4f",
    "%50", "%51", "%52", "%53", "%54", "%55", "%56", "%57",
    "%58", "%59", "%5a", "%5b", "%5c", "%5d", "%5e", "%5f",
    "%60", "%61", "%62", "%63", "%64", "%65", "%66", "%67",
    "%68", "%69", "%6a", "%6b", "%6c", "%6d", "%6e", "%6f",
    "%70", "%71", "%72", "%73", "%74", "%75", "%76", "%77",
    "%78", "%79", "%7a", "%7b", "%7c", "%7d", "%7e", "%7f",
    "%80", "%81", "%82", "%83", "%84", "%85", "%86", "%87",
    "%88", "%89", "%8a", "%8b", "%8c", "%8d", "%8e", "%8f",
    "%90", "%91", "%92", "%93", "%94", "%95", "%96", "%97",
    "%98", "%99", "%9a", "%9b", "%9c", "%9d", "%9e", "%9f",
    "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%a7",
    "%a8", "%a9", "%aa", "%ab", "%ac", "%ad", "%ae", "%af",
    "%b0", "%b1", "%b2", "%b3", "%b4", "%b5", "%b6", "%b7",
    "%b8", "%b9", "%ba", "%bb", "%bc", "%bd", "%be", "%bf",
    "%c0", "%c1", "%c2", "%c3", "%c4", "%c5", "%c6", "%c7",
    "%c8", "%c9", "%ca", "%cb", "%cc", "%cd", "%ce", "%cf",
    "%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7",
    "%d8", "%d9", "%da", "%db", "%dc", "%dd", "%de", "%df",
    "%e0", "%e1", "%e2", "%e3", "%e4", "%e5", "%e6", "%e7",
    "%e8", "%e9", "%ea", "%eb", "%ec", "%ed", "%ee", "%ef",
    "%f0", "%f1", "%f2", "%f3", "%f4", "%f5", "%f6", "%f7",
    "%f8", "%f9", "%fa", "%fb", "%fc", "%fd", "%fe", "%ff"
  };

  /**
   * Encode a string to the "x-www-form-urlencoded" form, enhanced
   * with the UTF-8-in-URL proposal. This is what happens:
   *
   * <ul>
   * <li><p>The ASCII characters 'a' through 'z', 'A' through 'Z',
   *        and '0' through '9' remain the same.
   *
   * <li><p>The unreserved characters - _ . ! ~ * ' ( ) remain the same.
   *
   * <li><p>The space character ' ' is converted into a plus sign '+'.
   *
   * <li><p>All other ASCII characters are converted into the
   *        3-character string "%xy", where xy is
   *        the two-digit hexadecimal representation of the character
   *        code
   *
   * <li><p>All non-ASCII characters are encoded in two steps: first
   *        to a sequence of 2 or 3 bytes, using the UTF-8 algorithm;
   *        secondly each of these bytes is encoded as "%xx".
   * </ul>
   *
   * @param s The string to be encoded
   * @return The encoded string
   */
  public static String encodeUTF(final String s)
  {
    final StringBuffer sbuf = new StringBuffer();
    final int len = s.length();
    for (int i = 0; i < len; i++)
    {
      final int ch = s.charAt(i);
      if ('A' <= ch && ch <= 'Z')
      { // 'A'..'Z'
        sbuf.append((char) ch);
      }
      else if ('a' <= ch && ch <= 'z')
      { // 'a'..'z'
        sbuf.append((char) ch);
      }
      else if ('0' <= ch && ch <= '9')
      { // '0'..'9'
        sbuf.append((char) ch);
      }
      else if (ch == ' ')
      {  // space
        sbuf.append('+');
      }
      else if (ch == '-' || ch == '_'  // unreserved
          || ch == '.' || ch == '!'
          || ch == '~' || ch == '*'
          || ch == '\'' || ch == '('
          || ch == ')')
      {
        sbuf.append((char) ch);
      }
      else if (ch <= 0x007f)
      {  // other ASCII
        sbuf.append(HEX_URL_ENCODING[ch]);
      }
      else if (ch <= 0x07FF)
      {  // non-ASCII <= 0x7FF
        sbuf.append(HEX_URL_ENCODING[0xc0 | (ch >> 6)]);
        sbuf.append(HEX_URL_ENCODING[0x80 | (ch & 0x3F)]);
      }
      else
      {  // 0x7FF < ch <= 0xFFFF
        sbuf.append(HEX_URL_ENCODING[0xe0 | (ch >> 12)]);
        sbuf.append(HEX_URL_ENCODING[0x80 | ((ch >> 6) & 0x3F)]);
        sbuf.append(HEX_URL_ENCODING[0x80 | (ch & 0x3F)]);
      }
    }
    return sbuf.toString();
  }


  /**
   * Provides a method to encode any string into a URL-safe
   * form.
   * Non-ASCII characters are first encoded as sequences of
   * two or three bytes, using the UTF-8 algorithm, before being
   * encoded as %HH escapes.
   */
  private static final String[] HEX_CSS_ENCODING = {
    "\\00 ", "\\01 ", "\\02 ", "\\03 ", "\\04 ", "\\05 ", "\\06 ", "\\07 ",
    "\\08 ", "\\09 ", "\\0a ", "\\0b ", "\\0c ", "\\0d ", "\\0e ", "\\0f ",
    "\\10 ", "\\11 ", "\\12 ", "\\13 ", "\\14 ", "\\15 ", "\\16 ", "\\17 ",
    "\\18 ", "\\19 ", "\\1a ", "\\1b ", "\\1c ", "\\1d ", "\\1e ", "\\1f ",
    "\\20 ", "\\21 ", "\\22 ", "\\23 ", "\\24 ", "\\25 ", "\\26 ", "\\27 ",
    "\\28 ", "\\29 ", "\\2a ", "\\2b ", "\\2c ", "\\2d ", "\\2e ", "\\2f ",
    "\\30 ", "\\31 ", "\\32 ", "\\33 ", "\\34 ", "\\35 ", "\\36 ", "\\37 ",
    "\\38 ", "\\39 ", "\\3a ", "\\3b ", "\\3c ", "\\3d ", "\\3e ", "\\3f ",
    "\\40 ", "\\41 ", "\\42 ", "\\43 ", "\\44 ", "\\45 ", "\\46 ", "\\47 ",
    "\\48 ", "\\49 ", "\\4a ", "\\4b ", "\\4c ", "\\4d ", "\\4e ", "\\4f ",
    "\\50 ", "\\51 ", "\\52 ", "\\53 ", "\\54 ", "\\55 ", "\\56 ", "\\57 ",
    "\\58 ", "\\59 ", "\\5a ", "\\5b ", "\\5c ", "\\5d ", "\\5e ", "\\5f ",
    "\\60 ", "\\61 ", "\\62 ", "\\63 ", "\\64 ", "\\65 ", "\\66 ", "\\67 ",
    "\\68 ", "\\69 ", "\\6a ", "\\6b ", "\\6c ", "\\6d ", "\\6e ", "\\6f ",
    "\\70 ", "\\71 ", "\\72 ", "\\73 ", "\\74 ", "\\75 ", "\\76 ", "\\77 ",
    "\\78 ", "\\79 ", "\\7a ", "\\7b ", "\\7c ", "\\7d ", "\\7e ", "\\7f ",
    "\\80 ", "\\81 ", "\\82 ", "\\83 ", "\\84 ", "\\85 ", "\\86 ", "\\87 ",
    "\\88 ", "\\89 ", "\\8a ", "\\8b ", "\\8c ", "\\8d ", "\\8e ", "\\8f ",
    "\\90 ", "\\91 ", "\\92 ", "\\93 ", "\\94 ", "\\95 ", "\\96 ", "\\97 ",
    "\\98 ", "\\99 ", "\\9a ", "\\9b ", "\\9c ", "\\9d ", "\\9e ", "\\9f ",
    "\\a0 ", "\\a1 ", "\\a2 ", "\\a3 ", "\\a4 ", "\\a5 ", "\\a6 ", "\\a7 ",
    "\\a8 ", "\\a9 ", "\\aa ", "\\ab ", "\\ac ", "\\ad ", "\\ae ", "\\af ",
    "\\b0 ", "\\b1 ", "\\b2 ", "\\b3 ", "\\b4 ", "\\b5 ", "\\b6 ", "\\b7 ",
    "\\b8 ", "\\b9 ", "\\ba ", "\\bb ", "\\bc ", "\\bd ", "\\be ", "\\bf ",
    "\\c0 ", "\\c1 ", "\\c2 ", "\\c3 ", "\\c4 ", "\\c5 ", "\\c6 ", "\\c7 ",
    "\\c8 ", "\\c9 ", "\\ca ", "\\cb ", "\\cc ", "\\cd ", "\\ce ", "\\cf ",
    "\\d0 ", "\\d1 ", "\\d2 ", "\\d3 ", "\\d4 ", "\\d5 ", "\\d6 ", "\\d7 ",
    "\\d8 ", "\\d9 ", "\\da ", "\\db ", "\\dc ", "\\dd ", "\\de ", "\\df ",
    "\\e0 ", "\\e1 ", "\\e2 ", "\\e3 ", "\\e4 ", "\\e5 ", "\\e6 ", "\\e7 ",
    "\\e8 ", "\\e9 ", "\\ea ", "\\eb ", "\\ec ", "\\ed ", "\\ee ", "\\ef ",
    "\\f0 ", "\\f1 ", "\\f2 ", "\\f3 ", "\\f4 ", "\\f5 ", "\\f6 ", "\\f7 ",
    "\\f8 ", "\\f9 ", "\\fa ", "\\fb ", "\\fc ", "\\fd ", "\\fe ", "\\ff "
  };

  /**
   * Encode a string to the "x-www-form-urlencoded" form, enhanced
   * with the UTF-8-in-URL proposal. This is what happens:
   *
   * <ul>
   * <li><p>The ASCII characters 'a' through 'z', 'A' through 'Z',
   *        and '0' through '9' remain the same.
   *
   * <li><p>The unreserved characters - _ . ! ~ * ' ( ) remain the same.
   *
   * <li><p>The space character ' ' is converted into a plus sign '+'.
   *
   * <li><p>All other ASCII characters are converted into the
   *        3-character string "%xy", where xy is
   *        the two-digit hexadecimal representation of the character
   *        code
   *
   * <li><p>All non-ASCII characters are encoded in two steps: first
   *        to a sequence of 2 or 3 bytes, using the UTF-8 algorithm;
   *        secondly each of these bytes is encoded as "%xx".
   * </ul>
   *
   * @param s The string to be encoded
   * @return The encoded string
   */
  public static String encodeCSS(final String s)
  {
    final StringBuffer sbuf = new StringBuffer();
    final int len = s.length();
    for (int i = 0; i < len; i++)
    {
      final int ch = s.charAt(i);
      if ('A' <= ch && ch <= 'Z')
      {  // 'A'..'Z'
        sbuf.append((char) ch);
      }
      else if ('a' <= ch && ch <= 'z')
      {  // 'a'..'z'
        sbuf.append((char) ch);
      }
      else if ('0' <= ch && ch <= '9')
      {  // '0'..'9'
        sbuf.append((char) ch);
      }
      else if (ch == '-')
      {
        sbuf.append((char) ch);
      }
      else if (ch <= 0x007f)
      {  // other ASCII
        sbuf.append(HEX_CSS_ENCODING[ch]);
      }
      else if (ch <= 0x07FF)
      {  // non-ASCII <= 0x7FF
        sbuf.append(HEX_CSS_ENCODING[0xc0 | (ch >> 6)]);
        sbuf.append(HEX_CSS_ENCODING[0x80 | (ch & 0x3F)]);
      }
      else
      {  // 0x7FF < ch <= 0xFFFF
        sbuf.append(HEX_CSS_ENCODING[0xe0 | (ch >> 12)]);
        sbuf.append(HEX_CSS_ENCODING[0x80 | ((ch >> 6) & 0x3F)]);
        sbuf.append(HEX_CSS_ENCODING[0x80 | (ch & 0x3F)]);
      }
    }
    return sbuf.toString();
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -