Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。
public class ConvertUtils { /** * 字符串转unicode * @param str * @return */ public static String str2Unicode(String str) { str = (str == null ? "" : str); String tmp; StringBuffer sb = new StringBuffer(1000); char c; int i, j; sb.setLength(0); for (i = 0; i < str.length(); i++) { c = str.charAt(i); sb.append("\u"); j = (c >>> 8); // 取出高8位 tmp = Integer.toHexString(j); if (tmp.length() == 1) sb.append("0"); sb.append(tmp); j = (c & 0xFF); // 取出低8位 tmp = Integer.toHexString(j); if (tmp.length() == 1) sb.append("0"); sb.append(tmp); } return sb.toString(); } /** * 字符串转unicode * * @param str * @return */ public static String strToUnicode(String str) { StringBuilder sb = new StringBuilder(); char[] c = str.toCharArray(); for (int i = 0; i < c.length; i++) { sb.append("\u" + Integer.toHexString(c[i])); } return sb.toString(); } /** * unicode转字符串 * * @param unicode * @return */ public static String unicodeToStr(String unicode) { StringBuilder sb = new StringBuilder(); String[] hex = unicode.split("\\u"); for (int i = 1; i < hex.length; i++) { int index = Integer.parseInt(hex[i], 16); sb.append((char) index); } return sb.toString(); } public static void main(String[] args) { String ucode=str2Unicode("Hollow 世界"); System.out.println(ucode); System.out.println(unicodeToStr(ucode)+" "); ucode=strToUnicode("Hollow 新世界"); System.out.println(ucode); System.out.println(unicodeToStr(ucode)); } }
输出:
u0048u006fu006cu006cu006fu0077u0020u4e16u754c
Hollow 世界
u48u6fu6cu6cu6fu77u20u65b0u4e16u754c
Hollow 新世界