java unicode与字符串转换

package util;  
  
import java.util.regex.Matcher;  
import java.util.regex.Pattern;  
  
/** 
 *  
 * <p>Title: String 与 Unicode 互相转换的工具类</p> 
 * <p>Description: </p> 
 * <p>Company: SCAU@Copyright</p> 
 * @Copyright 1.0 
 * @author jodenhe (824923282@qq.com) 
 * @version 1.0 
 * @since 2017年8月17日 下午9:42:50 
 */  
public class StringUnicodeUtil {  
      
    /** 
     * 含有unicode 的字符串转一般字符串 
     * @param unicodeStr 混有 Unicode 的字符串 
     * @return 
     */  
    public static String unicodeStr2String(String unicodeStr) {  
        int length = unicodeStr.length();  
        int count = 0;  
        //正则匹配条件,可匹配“\\u”1到4位,一般是4位可直接使用 String regex = "\\\\u[a-f0-9A-F]{4}";  
        String regex = "\\\\u[a-f0-9A-F]{1,4}";  
        Pattern pattern = Pattern.compile(regex);  
        Matcher matcher = pattern.matcher(unicodeStr);  
        StringBuffer sb = new StringBuffer();  
          
        while(matcher.find()) {  
            String oldChar = matcher.group();//原本的Unicode字符  
            String newChar = unicode2String(oldChar);//转换为普通字符  
            int index = unicodeStr.indexOf(oldChar);  
              
            sb.append(unicodeStr.substring(count, index));//添加前面不是unicode的字符  
            sb.append(newChar);//添加转换后的字符  
            count = index+oldChar.length();//统计下标移动的位置  
        }  
        sb.append(unicodeStr.substring(count, length));//添加末尾不是Unicode的字符  
        return sb.toString();  
    }  
      
    /** 
     * 字符串转换unicode 
     * @param string 
     * @return 
     */  
    public static String string2Unicode(String string) {  
        StringBuffer unicode = new StringBuffer();  
        for (int i = 0; i < string.length(); i++) {  
            // 取出每一个字符  
            char c = string.charAt(i);  
            // 转换为unicode  
            unicode.append("\\u" + Integer.toHexString(c));  
        }  
  
        return unicode.toString();  
    }  
  
    /** 
     * unicode 转字符串 
     * @param unicode 全为 Unicode 的字符串 
     * @return 
     */  
    public static String unicode2String(String unicode) {  
        StringBuffer string = new StringBuffer();  
        String[] hex = unicode.split("\\\\u");  
  
        for (int i = 1; i < hex.length; i++) {  
            // 转换出每一个代码点  
            int data = Integer.parseInt(hex[i], 16);  
            // 追加成string  
            string.append((char) data);  
        }  
  
        return string.toString();  
    }  
      
    public static void main(String[] args) {  
        String str = "abc";  
        String str2 = string2Unicode(str);  
        System.out.println(str2);  
        System.out.println(unicodeStr2String(str2));  
        System.out.println(unicodeStr2String("\\u61HJ\\u62\\u63(sfkfdsl)"));  
    }  
} 

正则转换unicode转换为字符串

public static String unicodeToString(String str) {

	    Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");

	    Matcher matcher = pattern.matcher(str);

	    char ch;

	    while (matcher.find()) {

	        ch = (char) Integer.parseInt(matcher.group(2), 16);

	        str = str.replace(matcher.group(1), ch+"" );

	    }

	    return str;

	}

原文链接:https://blog.csdn.net/u013066244/article/details/54708179

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值