java 中文与unicode互转

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}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )