JAVA——Unicode编码格式工具类
生活随笔
收集整理的這篇文章主要介紹了
JAVA——Unicode编码格式工具类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Maven
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.4.3</version></dependency>解決方案?
HexadecimalUtil?
package cn.edu.zstu.myzstu.utils.core.util;import cn.hutool.core.util.HexUtil;/*** @author ShenTuZhiGang* @version 1.0.0* @date 2020-09-23 13:24*/ public class HexadecimalUtil extends HexUtil {/*** 用于建立十六進制字符的輸出的小寫字符數組*/private static final char[] DIGITS_LOWER = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};/*** 用于建立十六進制字符的輸出的大寫字符數組*/private static final char[] DIGITS_UPPER = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};public static String toHexadecimal(char ch) {return toHexadecimal(ch,false);}/*** 將指定char值轉換為Unicode字符串形式,常用于特殊字符(例如漢字)轉Unicode形式<br>* 轉換的字符串如果不足4位,則前面用0填充,例如:** <pre>* '我' =4f60* </pre>** @param ch char值* @return Unicode表現形式* @since 4.0.1*/public static String toHexadecimal(char ch,Boolean toUpperCase) {final char [] DIGITS = toUpperCase?DIGITS_UPPER:DIGITS_LOWER;return "" +//DIGITS[(ch >> 12) & 15] +//DIGITS[(ch >> 8) & 15] +//DIGITS[(ch >> 4) & 15] +//DIGITS[(ch) & 15];}}UnicodeUtil?
package cn.edu.zstu.myzstu.utils;import cn.edu.zstu.myzstu.utils.core.util.HexadecimalUtil; import cn.hutool.core.text.StrBuilder; import cn.hutool.core.util.CharUtil; import cn.hutool.core.util.HexUtil; import cn.hutool.core.util.StrUtil;/*** 提供Unicode字符串和普通字符串之間的轉換** @author ShenTuZhiGang* @version 1.0.0* @date 2020-09-22 23:59*/ public class UnicodeUtil {/*** Unicode字符串轉為普通字符串<br>* Unicode字符串的表現方式為:\\uXXXX** @param unicode Unicode字符串* @return 普通字符串*/public static String toString(String unicode) {if (StrUtil.isBlank(unicode)) {return unicode;}final int len = unicode.length();StrBuilder sb = StrBuilder.create(len);int i;int pos = 0;while ((i = StrUtil.indexOfIgnoreCase(unicode, "\\u", pos)) != -1) {sb.append(unicode, pos, i);//寫入Unicode符之前的部分pos = i;if (i + 5 < len) {char c;try {c = (char) Integer.parseInt(unicode.substring(i + 2, i + 6), 16);sb.append(c);pos = i + 6;//跳過整個Unicode符} catch (NumberFormatException e) {//非法Unicode符,跳過sb.append(unicode, pos, i + 2);//寫入"\\u"pos = i + 2;}} else {//非Unicode符,結束break;}}if (pos < len) {sb.append(unicode, pos, len);}return sb.toString();}/*** 字符串編碼為Unicode形式** @param str 被編碼的字符串* @return Unicode字符串*/public static String toUnicode(String str) {return toUnicode(str, true);}/*** 字符串編碼為Unicode形式** @param str 被編碼的字符串* @param format 16進制Unicode編碼格式* @return*/public static String toUnicode(String str,UnicodeEncodingFormat format) {return toUnicode(str, true,format);}/*** 字符串編碼為Unicode形式** @param str 被編碼的字符串* @param isSkipAscii 是否跳過ASCII字符(只跳過可見字符)* @return Unicode字符串*/public static String toUnicode(String str, boolean isSkipAscii) {return toUnicode(str, isSkipAscii, UnicodeEncodingFormat.BACKSLASH_U);}/*** 字符串編碼為Unicode形式** @param str 被編碼的字符串* @param isSkipAscii 是否跳過ASCII字符(只跳過可見字符)* @param format 16進制Unicode編碼格式* @return Unicode字符串*/public static String toUnicode(String str, boolean isSkipAscii,UnicodeEncodingFormat format) {if (StrUtil.isEmpty(str)) {return str;}final int len = str.length();final StrBuilder unicode = StrBuilder.create(str.length() * 6);char c;for (int i = 0; i < len; i++) {c = str.charAt(i);if (isSkipAscii && CharUtil.isAsciiPrintable(c)) {unicode.append(c);} else {unicode.append(String.format(format.format,HexadecimalUtil.toHexadecimal(c),format.toUpperCase));}}return unicode.toString();}/*** 16進制Unicode編碼格式*/public enum UnicodeEncodingFormat{BACKSLASH_U("\\u%s",false),BACKSLASH("\\%s",true),BRACKETS("[%s]",false);public String format;public Boolean toUpperCase;UnicodeEncodingFormat(String format,Boolean toUpperCase){this.format = format;this.toUpperCase = toUpperCase;}} }參考文章
java中unicode utf-8以及漢字之間的轉換工具類
總結
以上是生活随笔為你收集整理的JAVA——Unicode编码格式工具类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浙江理工大学电信宽带校园网访问添加路由表
- 下一篇: JAVA——GZIP压缩与解压缩