java实现Unicode编码和可读字符互转

实现Unicode编码与可读字符的转换。

今天遇到的错误提示,提示全是Unicode编码,写了一段代码将错误提示转为可读。

测试结果如下:

在这里插入图片描述

package com.demo;

import java.io.UnsupportedEncodingException;

public class GetUnicode {

    public static void main(String[] args) throws UnsupportedEncodingException {
        String unicode = "jdk1.8\\u73af\\u5883\\u4e0b\\u6253\\u5305\\u65f6\\u62a5\\u9519 \\u201c-source 1.5 \\u4e2d\\u4e0d\\u652f\\u6301 lambda \\u8868\\u8fbe\\u5f0f\\u201d ";
        System.out.println("待转换unicode字符");
        System.out.println(unicode);
        String str = unicodeToString(unicode);
        System.out.println("转换Unicode字符为可读字符");
        System.out.println(str);
        String unicodeStr = stringToUnicode(str);
        System.out.println("反转测试");
        System.out.println(unicodeStr);
    }

    public static String stringToUnicode(String unicode) {
        char[] chars = unicode.toCharArray();
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < chars.length ; i++) {
            if (chars[i]>= 0 && chars[i]<=127){
                builder.append(chars[i]);
            }else {
                builder.append("\\u");
                String hx = Integer.toString(chars[i], 16);
                if (hx.length()<4){
                    builder.append("0000".substring(hx.length())).append(hx);
                }else {
                    builder.append(hx);
                }
            }

        }
        return builder.toString();
    }

    public static String unicodeToString(String s) {
        String[] split = s.split("\\\\");

        StringBuilder builder = new StringBuilder();

        for (int i = 0; i < split.length ; i++) {

            if (split[i].startsWith("u")){
               builder.append((char) Integer.parseInt(split[i].substring(1,5), 16));
               if(split[i].length()>5){
                   builder.append(split[i].substring(5));
               }
            }else {
                builder.append(split[i]);
            }

        }
        return builder.toString();
    }
}

猜你喜欢

转载自blog.csdn.net/sperospera/article/details/89354906
今日推荐