美文网首页
Android中文和Unicode互转工具类

Android中文和Unicode互转工具类

作者: 丨逐风者丨 | 来源:发表于2022-01-13 11:14 被阅读0次

    Kotlin

    package com.zcs.app.demo
    
    fun main() {
        val src = "你好 世界?Hello World,Kotlin > Java"
        val unicode = UnicodeUtils.decode(src)
        val str = UnicodeUtils.encode(unicode)
        println("Unicode is --> $unicode")
        println("Chinese is --> $str")
    }
    
    /**
     * @author ZengCS
     * @deprecated Kotlin处理中文和Unicode互转工具类
     */
    object UnicodeUtils {
        /**
         * 将字符串转成Unicode编码,包括但不限于中文
         *
         * @param src 原始字符串,包括但不限于中文
         * @return Unicode编码字符串
         */
        fun decode(src: String): String {
            val builder = StringBuilder()
            for (element in src) {
                // 如果你的Kotlin版本低于1.5,这里 element.code 会报错 找不到方法,请替换成:
                // Kotlin < 1.5
                // var s = Integer.toHexString(element.toInt())
                // Kotlin >= 1.5
                var s = Integer.toHexString(element.code)
    
                if (s.length == 2) {// 英文转16进制后只有两位,补全4位
                    s = "00$s"
                }
                builder.append("\\u$s")
            }
            return builder.toString()
        }
    
        /**
         * 解码Unicode字符串,得到原始字符串
         *
         * @param unicode Unicode字符串
         * @return 解码后的原始字符串
         */
        fun encode(unicode: String): String {
            val builder = StringBuilder()
            val hex = unicode.split("\\\\u".toRegex()).toTypedArray()
            for (i in 1 until hex.size) {
                val data = hex[i].toInt(16)
                builder.append(data.toChar())
            }
            return builder.toString()
        }
    }
    

    Java

    package com.zcs.app.demo;
    
    /**
     * @author ZengCS
     * @deprecated Java处理中文和Unicode互转工具类
     */
    public class JUnicodeUtils {
        public static void main(String[] args) {
            String src = "你好 世界?Hello World,I am Java";
            String unicode = decode(src);
            String str = encode(unicode);
            System.out.println("Unicode is --> " + unicode);
            System.out.println("Chinese is --> " + str);
        }
    
        /**
         * 将字符串转成Unicode编码,包括但不限于中文
         *
         * @param src 原始字符串,包括但不限于中文
         * @return Unicode编码字符串
         */
        public static String decode(String src) {
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < src.length(); i++) {
                char c = src.charAt(i);
                String s = Integer.toHexString(c);
                if (s.length() == 2) {
                    s = "00" + s;
                }
                builder.append("\\u").append(s);
            }
            return builder.toString();
        }
    
        /**
         * 解码Unicode字符串,得到原始字符串
         *
         * @param unicode Unicode字符串
         * @return 解码后的原始字符串
         */
        public static String encode(String unicode) {
            StringBuilder builder = new StringBuilder();
            String[] hex = unicode.split("\\\\u");
            for (int i = 1; i < hex.length; i++) {
                int data = Integer.parseInt(hex[i], 16);
                builder.append((char) data);
            }
            return builder.toString();
        }
    }
    

    转换后,可以通过这个工具网站进行验证:https://www.bejson.com/convert/unicode_chinese/

    相关文章

      网友评论

          本文标题:Android中文和Unicode互转工具类

          本文链接:https://www.haomeiwen.com/subject/oqdncrtx.html