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 新世界
  • 相关阅读:
    springboot中filter的配置和顺序执行
    springboot整合fastdfs实现上传和下载
    移动端通过fiddler代理调试PC端代码
    react-native windows 环境搭建
    带你逐行阅读redux源码
    前端单页面拆分多个单页面
    Koa2学习(九)与mongoDB交互
    Koa2学习(八)使用session
    Koa2学习(七)使用cookie
    Koa2学习(六)使用koa-router
  • 原文地址:https://www.cnblogs.com/heyang78/p/11819892.html
Copyright © 2011-2022 走看看