1public class FontUtil { 2 3 public static void main(String[] args) { 4 System.out.println(chinaToUnicode("未登陆!")); 5 System.out.println(decodeUnicode("\u672a\u767b\u9646\uff01")); 6 } 7 8 /** 9 * 把中文转成Unicode码 10 * 11 * @param str 12 * @return 13 */ 14 public static String chinaToUnicode(String str) { 15 String result = ""; 16 for (int i = 0; i < str.length(); i++) { 17 int chr1 = (char) str.charAt(i); 18 if (chr1 >= 19968 && chr1 <= 171941) {// 汉字范围 \u4e00-\u9fa5 (中文) 19 result += "\\u" + Integer.toHexString(chr1); 20 } else { 21 result += str.charAt(i); 22 } 23 } 24 return result; 25 } 26 27 /** 28 * 判断是否为中文字符 29 * 30 * @param c 31 * @return 32 */ 33 public static boolean isChinese(char c) { 34 Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); 35 if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS 36 || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS 37 || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A 38 || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION 39 || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION 40 || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) { 41 return true; 42 } 43 return false; 44 } 45 46 47 //Unicode转中文 48 public static String decodeUnicode(final String unicode) { 49 StringBuffer string = new StringBuffer(); 50 51 String[] hex = unicode.split("\\\\u"); 52 53 for (int i = 0; i < hex.length; i++) { 54 55 try { 56 // 汉字范围 \u4e00-\u9fa5 (中文) 57 if(hex[i].length()>=4){//取前四个,判断是否是汉字 58 String chinese = hex[i].substring(0, 4); 59 try { 60 int chr = Integer.parseInt(chinese, 16); 61 boolean isChinese = isChinese((char) chr); 62 //转化成功,判断是否在 汉字范围内 63 if (isChinese){//在汉字范围内 64 // 追加成string 65 string.append((char) chr); 66 //并且追加 后面的字符 67 String behindString = hex[i].substring(4); 68 string.append(behindString); 69 }else { 70 string.append(hex[i]); 71 } 72 } catch (NumberFormatException e1) { 73 string.append(hex[i]); 74 } 75 76 }else{ 77 string.append(hex[i]); 78 } 79 } catch (NumberFormatException e) { 80 string.append(hex[i]); 81 } 82 } 83 84 return string.toString(); 85 } 86 87}
java 中文与unicode互转
Wesley13
2021-10-11
1194 1 0
点赞
收藏
评论区
加载中...