`
流浪鱼
  • 浏览: 1684774 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

编码解码工具类

    博客分类:
  • java
 
阅读更多

 

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.lang.StringEscapeUtils;

/**
 * 封装各种格式的编码解码工具类.
 * 
 * 1.Commons-Codec的hex/base64 编码
 * 2.Commons-Lang的xml/html escape
 * 3.JDK提供的URLEncoder
 * 
 */
public abstract class EncodeUtils {

    private static final String ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    private static final String DEFAULT_URL_ENCODING = "UTF-8";

    /**
     * Hex编码, byte[]->String.
     */
    public static String encodeHex(byte[] input) {
        return Hex.encodeHexString(input);
    }

    /**
     * Hex解码, String->byte[].
     */
    public static byte[] decodeHex(String input) {
        try {
            return Hex.decodeHex(input.toCharArray());
        } catch (DecoderException e) {
            throw new IllegalStateException("Hex Decoder exception", e);
        }
    }

    /**
     * Base64编码, byte[]->String.
     */
    public static String encodeBase64(byte[] input) {
        return Base64.encodeBase64String(input);
    }

    /**
     * Base64编码, URL安全(将Base64中的URL非法字符'+'和'/'转为'-'和'_', 见RFC3548).
     */
    public static String encodeUrlSafeBase64(byte[] input) {
        return Base64.encodeBase64URLSafeString(input);
    }

    /**
     * Base64解码, String->byte[].
     */
    public static byte[] decodeBase64(String input) {
        return Base64.decodeBase64(input);
    }

    /**
     * Base62(0_9A_Za_z)编码数字, long->String.
     */
    public static String encodeBase62(long num) {
        return alphabetEncode(num, 62);
    }

    /**
     * Base62(0_9A_Za_z)解码数字, String->long.
     */
    public static long decodeBase62(String str) {
        return alphabetDecode(str, 62);
    }

    private static String alphabetEncode(long num, int base) {
        num = Math.abs(num);
        StringBuilder sb = new StringBuilder();
        for (; num > 0; num /= base) {
            sb.append(ALPHABET.charAt((int) (num % base)));
        }

        return sb.toString();
    }

    private static long alphabetDecode(String str, int base) {
        AssertUtils.hasText(str);

        long result = 0;
        for (int i = 0; i < str.length(); i++) {
            result += ALPHABET.indexOf(str.charAt(i)) * Math.pow(base, i);
        }

        return result;
    }

    /**
     * URL 编码, Encode默认为UTF-8. 
     */
    public static String urlEncode(String part) {
        try {
            return URLEncoder.encode(part, DEFAULT_URL_ENCODING);
        } catch (UnsupportedEncodingException e) {
            throw ExceptionUtils.unchecked(e);
        }
    }

    /**
     * URL 解码, Encode默认为UTF-8. 
     */
    public static String urlDecode(String part) {

        try {
            return URLDecoder.decode(part, DEFAULT_URL_ENCODING);
        } catch (UnsupportedEncodingException e) {
            throw ExceptionUtils.unchecked(e);
        }
    }

    /**
     * Html 转码.
     */
    public static String htmlEscape(String html) {
        return StringEscapeUtils.escapeHtml(html);
    }

    /**
     * Html 解码.
     */
    public static String htmlUnescape(String htmlEscaped) {
        return StringEscapeUtils.unescapeHtml(htmlEscaped);
    }

    /**
     * Xml 转码.
     */
    public static String xmlEscape(String xml) {
        return StringEscapeUtils.escapeXml(xml);
    }

    /**
     * Xml 解码.
     */
    public static String xmlUnescape(String xmlEscaped) {
        return StringEscapeUtils.unescapeXml(xmlEscaped);
    }
}

 

 

 

 

分享到:
评论

相关推荐

    封装各种格式的编码解码工具类

    /** * 封装各种格式的编码解码工具类. * 1.Commons-Codec的 hex/base64 编码 * 2.自制的base62 编码 * 3.Commons-Lang的xml/html escape * 4.JDK提供的URLEncoder */

    Base64编码解码工具类

    android Base64编码解码jar包

    各种格式的编码解码工具类分享(hex解码 base64编码)

    【编码与解码工具类详解】 在编程中,我们经常需要对数据进行编码和解码,以便于存储、传输或处理。本篇文章将详细介绍几种常见的编码解码方式,包括Hex编码、Base64编码以及URL编码,并提供一个集成Apache Commons...

    java操作工具类

    10. **编码解码工具类**: 包括字符编码转换、Base64编码解码、Hex编码解码等。`CodecUtils`可能包含这些功能,方便进行数据的编码和解码。 以上只是`opslabJutil-master`可能包含的一些核心功能模块,实际的工具...

    base64-编码解码工具-python实现源码

    在提供的压缩包文件"base64"中,可能包含了更具体的Base64编码解码工具的实现,例如自定义类或扩展功能。这些源码可以作为学习和理解Base64编码工作原理的实例,也可以作为基础,帮助你开发更复杂的应用,如文件的...

    50个左右的JAVA工具类,相对比较全

    8. **编码解码工具类**:如Base64编码解码,可以在Java 8的java.util.Base64中找到,或者Apache Commons Codec库提供了更多编码方式。 9. **线程并发工具类**:Java的java.util.concurrent包提供了线程池、同步工具...

    邮件编码解码工具 md5,base64,qp编码解码,非常小巧有用

    md5,base64,qp编码解码,非常小巧有用

    28个java常用的工具类源码

    11. **编码解码工具类**:如EncodingUtils,支持各种字符编码和解码,解决跨平台时的编码问题。 12. **正则表达式工具类**:如RegexUtils,提供了正则匹配、替换、提取等功能,简化了文本处理。 13. **JSON解析...

    获取编码格式的工具类

    这通常涉及到读取原始文件,按照原编码解码,然后用新编码重新编码并写入新的文件。 3. **读取指定编码的文件**:该工具类可能提供一个方法,接受用户提供的编码参数,读取相应编码的文件内容,避免因误判编码导致...

    UrlEncodeDecode解码编码工具(双向)

    总的来说,"UrlEncodeDecode解码编码工具"是一个实用的辅助工具,对于那些经常处理URL编码和解码问题的人来说,它能极大地提高工作效率,简化工作流程。无论你是开发人员、网页设计师,还是需要处理URL的任何人,这...

    28个java常用的工具类

    12. **编码解码工具类**:如`CodecUtils`,包含了各种编码和解码方法,例如`encodeBase64()`用于Base64编码,`decodeHex()`用于十六进制解码。 13. **URL处理工具类**:`UrlUtils`可以帮助处理URL,包括构建、解析...

    java工具类28+26.rar

    10. **编码解码工具类**:如EncodeDecodeUtil,可能包括Base64编码、Hex编码、URL编码等,对于数据传输和存储中的编码问题很有用。 11. **异常处理工具类**:如ExceptionUtil,可能包含异常的捕获、包装、转换等...

    加密,解密,Base64编码,解码, Hex的编码解码 的工具类

    "加密,解密,Base64编码,解码,Hex的编码解码的工具类"是一个非常实用的软件模块,它提供了对数据进行不同形式处理的功能。让我们深入探讨一下这些概念以及它们在实际应用中的作用。 首先,我们来看加密。加密是...

    codeURL编码解码工具

    本文将详细讲解"codeURL编码解码工具"的相关知识点,包括URL编码的原理、用途以及如何使用这类工具进行编码和解码。 URL(Uniform Resource Locator)即统一资源定位符,是互联网上的资源地址。它由协议类型、主机...

    日常用的工具类

    8. **编码解码工具类**:如`EncodingUtils`,用于进行字符编码和解码,处理字符集问题。在Java中,`Charset`和`StandardCharsets`类提供了多种字符集的转换。 9. **线程和并发工具类**:如`ThreadUtils`,包含线程...

    HTML与URL编码解码工具

    在提供的压缩包中,"Html与Url编码解码工具.exe"很可能是一个实用的应用程序,集成了HTML编码和URL编码解码的功能。使用这样的工具,开发者和网络安全专家可以更方便地处理和检查网页内容以及URL,确保数据的准确性...

    Base64编码解码工具V1.5

    描述中提到的"Base64编码解码工具V1.5"是一款实用软件,能够帮助用户对Base64编码的数据进行解码。在使用过程中,用户只需选择"Base64"编码选项,软件就会自动处理输入的Base64字符串,将其还原为原始的二进制数据。...

    JAVA开发中重用到的Utils,通用工具类 utils.rar

    9. **编码解码工具类(EncodingUtil)**:处理字符编码和解码问题,如GBK、UTF-8等。例如,`getBytes()`将字符串转换为特定编码的字节数组。 10. **正则表达式工具类(RegexUtil)**:提供了与正则表达式相关的操作,如...

    Delphi协议编解码工具类

    总的来说,这个Delphi协议编解码工具类是一个实用的工具,它帮助开发者高效地处理数据的编码和解码任务,特别是在处理网络协议或需要从文本格式解析数字的场景下。通过深入理解和使用这个工具类,开发者可以更好地...

    实现HTML编码和解码的JavaScript工具类

    结合标签"jQuery库",我们可以推测这个工具类可能也与jQuery兼容,这意味着开发者可以利用jQuery的选择器和方法来选取元素,然后使用`js-htmlencode`对选中的内容进行编码或解码。例如: ```javascript var text = ...

Global site tag (gtag.js) - Google Analytics