【工具类】Unicode与中文互转

在应用开发和数据传输、持久化过程中,中文与 unicode 互转是相当有用的,比如说社交应用中经常用到的传输存储 emoji 表情。整理为工具类后更是方便统一调用,话不多说上源码:

/**
 * 

unicode 编码解码工具类

* @author qsmx * */ public class UnicodeUtil { /** *

转为unicode 编码

* @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(); } /** *

unicode 解码

* @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; } /** *

转为数据库查询编码

* 向数据库查询时,\\u需要转为% * @param str * @return */ public static String encodeDBSearchParam(String str) { str = encode(str); str = str.replace("\\", "%"); return str; } /** *

解码数据库查询参数

* 数据库查询后,回传参数% 转回\\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



End .

你可能感兴趣的:(工具类)