【工具類】Unicode與中文互轉
阿新 • • 發佈:2019-02-03
在應用開發和資料傳輸、持久化過程中,中文與 unicode 互轉是相當有用的,比如說社交應用中經常用到的傳輸儲存 emoji 表情。整理為工具類後更是方便統一呼叫,話不多說上原始碼:
End ./** * <p>unicode 編碼解碼工具類<p> * @author qsmx * */ public class UnicodeUtil { /** * <p>轉為unicode 編碼<p> * @param string * @return unicodeString */ public static String encode(String str) { String prifix = "\\u"; StringBuffer unicode = new StringBuffer(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); String code = prifix + format(Integer.toHexString(c)); unicode.append(code); } return unicode.toString(); } /** * <p>unicode 解碼<p> * @param unicode * @return originalString */ public static String decode(String unicode) { StringBuffer str = new StringBuffer(); String[] hex = unicode.split("\\\\u"); for (int i = 1; i < hex.length; i++) { int data = Integer.parseInt(hex[i], 16); str.append((char) data); } return str.length() > 0 ? str.toString() : unicode; } /** * <p>轉為資料庫查詢編碼<p> * 向資料庫查詢時,\\u需要轉為% * @param str * @return */ public static String encodeDBSearchParam(String str) { str = encode(str); str = str.replace("\\", "%"); return str; } /** * <p>解碼資料庫查詢引數<p> * 資料庫查詢後,回傳引數% 轉回\\u * @param str * @return */ public static String decodeDBSearchParam(String str) { str = str.replace("%", "\\"); str = decode(str); return str; } /** * 為長度不足4位的unicode 值補零 * @param str * @return */ private static String format(String str) { for ( int i=0, l=4-str.length(); i<l; i++ ) str = "0" + str; return str; } }