package com.wgcloud.util;
|
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
|
import java.io.UnsupportedEncodingException;
|
import java.net.URLDecoder;
|
import java.net.URLEncoder;
|
|
/**
|
* @version v3.3
|
* @ClassName:Encode.java
|
* @author: http://www.wgstart.com
|
* @date: 2021年1月16日
|
* @Description: Encode.java
|
* @Copyright: 2019-2021 wgcloud. All rights reserved.
|
*/
|
public class Encode {
|
|
private static final Logger logger = LoggerFactory.getLogger(Encode.class);
|
|
/**
|
* 以UTF-8编码,再以系统默认编码解码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String utf8ToSystem(String str) {
|
return encode(str, "UTF-8", System.getProperty("file.encoding"));
|
}
|
|
/**
|
* 以系统默认编码编码,再以UTF-8解码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String systemToUtf8(String str) {
|
return encode(str, System.getProperty("file.encoding"), "UTF-8");
|
}
|
|
/**
|
* 以GBK编码,再以系统默认编码解码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String gbkToSystem(String str) {
|
return encode(str, "GBK", System.getProperty("file.encoding"));
|
}
|
|
/**
|
* 以系统默认编码编码,再以GBK解码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String systemToGbk(String str) {
|
return encode(str, System.getProperty("file.encoding"), "GBK");
|
}
|
|
/**
|
* 以ISO_8859_1编码,再以系统默认编码解码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String iso_8859_1ToSystem(String str) {
|
return encode(str, "ISO_8859_1", System.getProperty("file.encoding"));
|
}
|
|
/**
|
* 以系统默认编码编码,再以ISO_8859_1解码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String systemToIso_8859_1(String str) {
|
return encode(str, System.getProperty("file.encoding"), "ISO_8859_1");
|
}
|
|
/**
|
* 以ISO_8859_1编码,再以GBK解码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String iso_8859_1ToGbk(String str) {
|
return encode(str, "ISO_8859_1", "GBK");
|
}
|
|
/**
|
* 以GBK编码,再以ISO_8859_1解码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String gbkToIso_8859_1(String str) {
|
return encode(str, "GBK", "ISO_8859_1");
|
}
|
|
/**
|
* 以UTF-8编码,再以GBK解码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String utf8ToGbk(String str) {
|
return encode(str, "UTF-8", "GBK");
|
}
|
|
/**
|
* 以GBK编码,再以UTF-8解码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String gbkToUtf8(String str) {
|
return encode(str, "GBK", "UTF-8");
|
}
|
|
/**
|
* 以UTF-8编码,再以ISO_8859_1解码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String utf8ToIso_8859_1(String str) {
|
return encode(str, "UTF-8", "ISO_8859_1");
|
}
|
|
/**
|
* 以ISO_8859_1编码,再以UTF-8解码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String iso_8859_1ToUtf8(String str) {
|
return encode(str, "ISO_8859_1", "UTF-8");
|
}
|
|
/**
|
* URL编码
|
* 以系统默认码编码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String urlEncode(String str) {
|
str = urlEncode(str, System.getProperty("file.encoding"));
|
return str;
|
}
|
|
/**
|
* URL编码
|
* 以指定码编码
|
*
|
* @param str 编码前字串
|
* @param encoding 指定编码
|
* @return 编码后字串
|
*/
|
public static String urlEncode(String str, String encoding) {
|
try {
|
str = URLEncoder.encode(str, encoding);
|
} catch (UnsupportedEncodingException ex) {
|
ex.printStackTrace(System.out);
|
return null;
|
}
|
return str;
|
}
|
|
/**
|
* URL解码
|
* 以系统默认码解码
|
*
|
* @param str 编码前字串
|
* @return 编码后字串
|
*/
|
public static String urlDecode(String str) {
|
str = urlDecode(str, System.getProperty("file.encoding"));
|
return str;
|
}
|
|
/**
|
* URL解码
|
* 以指定码解码
|
*
|
* @param str 编码前字串
|
* @param encoding 指定编码
|
* @return 编码后字串
|
*/
|
public static String urlDecode(String str, String encoding) {
|
try {
|
str = URLDecoder.decode(str, encoding);
|
} catch (UnsupportedEncodingException ex) {
|
logger.error("处理乱码异常" + ex.toString());
|
return "";
|
}
|
return str;
|
}
|
|
/**
|
* 对中文URL编码,用来在浏览器端访问Linux服务器上资源
|
* 以指定码编码,只针对中文
|
*
|
* @param str 编码前字串
|
* @param encoding 指定编码
|
* @return 编码后字串
|
*/
|
public static String urlEncodeForLinux(String str, String encoding) {
|
str = Encode.gbkToSystem(str);
|
str = Encode.urlEncode(str, encoding);
|
str = str.replaceAll("\\+", "%20");
|
|
return str;
|
}
|
|
/**
|
* 编码转换,将字符串为指定编码
|
*
|
* @param str 编码前字串
|
* @param encodeStr 原字符串编码
|
* @param decodeStr 指定编码
|
* @return 编码后字串
|
*/
|
public static String encode(String str, String encodeStr, String decodeStr) {
|
try {
|
str = new String(str.getBytes(encodeStr), decodeStr);
|
} catch (UnsupportedEncodingException ex) {
|
ex.printStackTrace(System.out);
|
return null;
|
}
|
|
return str;
|
}
|
|
/**
|
* URL解码
|
* 以指定码解码
|
*
|
* @param str 编码前字串
|
* @param encoding 指定编码
|
* @return 编码后字串
|
*/
|
public static String luanmaStr(String str) {
|
try {
|
str = new String(str.getBytes("ISO-8859-1"), "utf-8");
|
} catch (UnsupportedEncodingException ex) {
|
logger.error("处理乱码异常" + ex.toString());
|
return "";
|
}
|
return str;
|
}
|
|
|
}
|