zoukankan      html  css  js  c++  java
  • 【Java】Unicode和字符串互转

    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 新世界
  • 相关阅读:
    并发编程-阻塞队列&JUC常用工具
    并发编程-Condition源码分析&基于Condition实现阻塞队列
    并发编程-ReentrantLock锁源码分析&Condition设计
    并发编程-JMM&ReentrantLock锁以及原理
    数据库操作支持函数
    python内置进制转换函数
    三目运算符
    数据库常见操作
    宏使用汇总
    sort: invalid comparator
  • 原文地址:https://www.cnblogs.com/heyang78/p/11819892.html
Copyright © 2011-2022 走看看