package com.blade.kit; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; /** * 编码解码相关工具类 */ public class EncodeKit { private EncodeKit() { throw new UnsupportedOperationException("u can't instantiate me..."); } /** * URL编码 * <p>若想自己指定字符集,可以使用{@link #urlEncode(String input, String charset)}方法</p> * * @param input 要编码的字符 * @return 编码为UTF-8的字符串 */ public static String urlEncode(String input) { return urlEncode(input, "UTF-8"); } /** * URL编码 * <p>若系统不支持指定的编码字符集,则直接将input原样返回</p> * * @param input 要编码的字符 * @param charset 字符集 * @return 编码为字符集的字符串 */ public static String urlEncode(String input, String charset) { try { return URLEncoder.encode(input, charset); } catch (UnsupportedEncodingException e) { return input; } } /** * URL解码 * <p>若想自己指定字符集,可以使用 {@link #urlDecode(String input, String charset)}方法</p> * * @param input 要解码的字符串 * @return URL解码后的字符串 */ public static String urlDecode(String input) { return urlDecode(input, "UTF-8"); } /** * URL解码 * <p>若系统不支持指定的解码字符集,则直接将input原样返回</p> * * @param input 要解码的字符串 * @param charset 字符集 * @return URL解码为指定字符集的字符串 */ public static String urlDecode(String input, String charset) { try { return URLDecoder.decode(input, charset); } catch (UnsupportedEncodingException e) { return input; } } /** * Base64编码 * * @param input 要编码的字符串 * @return Base64编码后的字符串 */ public static byte[] base64Encode(String input) { return base64Encode(input.getBytes()); } /** * Base64编码 * * @param input 要编码的字节数组 * @return Base64编码后的字符串 */ public static byte[] base64Encode(byte[] input) { return Base64.encode(input, Base64.NO_WRAP); } /** * Base64编码 * * @param input 要编码的字节数组 * @return Base64编码后的字符串 */ public static String base64Encode2String(byte[] input) { return Base64.encodeToString(input, Base64.NO_WRAP); } /** * Base64解码 * * @param input 要解码的字符串 * @return Base64解码后的字符串 */ public static byte[] base64Decode(String input) { return Base64.decode(input, Base64.NO_WRAP); } /** * Base64解码 * * @param input 要解码的字符串 * @return Base64解码后的字符串 */ public static byte[] base64Decode(byte[] input) { return Base64.decode(input, Base64.NO_WRAP); } /** * Base64URL安全编码 * <p>将Base64中的URL非法字符�?,/=转为其他字符, 见RFC3548</p> * * @param input 要Base64URL安全编码的字符串 * @return Base64URL安全编码后的字符串 */ public static byte[] base64UrlSafeEncode(String input) { return Base64.encode(input.getBytes(), Base64.URL_SAFE); } }