Unicode转中文

由于需要将类似如下的字符串中的Unicode转成中文,于是,我封装了一个工具类UnicodeToChineseUtil

{"errNum":0,"retMsg":"success","retData":{"phone":"15943121227","prefix":"1594812","supplier":"\u79fb\u52a8","province":"\u6d59\u6c5f","city":"\u676d\u5dde","suit":"159\u5361"}}

具体代码如下:

package com.raze.unicode;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * @author DJM
 */
public class UnicodeToChineseUtil {
    
    private static final Logger logger = LoggerFactory.getLogger(UnicodeToChineseUtil.class);
    
    private UnicodeToChineseUtil(){
    }
    
    public static UnicodeToChineseUtil getInstance(){
        return new UnicodeToChineseUtil();
    }
    
    public String convert(String parameterStirng){
        logger.debug("The parameter is {}.", parameterStirng);
        StringBuffer buffer = new StringBuffer();
        if(parameterStirng.indexOf("\\u")==-1){
            logger.debug("The parameter not contain unicode.");
            buffer.append(parameterStirng);
        }else{
            while(parameterStirng.indexOf("\\u")!=-1){
                String substringNotUnicode = parameterStirng.substring(0,parameterStirng.indexOf("\\u"));
                buffer.append(substringNotUnicode);
                logger.debug("The substring {} not contain unicode", substringNotUnicode);
                String substringOfUnicode="";
                try {
                    substringOfUnicode = parameterStirng.substring(parameterStirng.indexOf("\\u"),parameterStirng.indexOf("\\u")+6);
                } catch (StringIndexOutOfBoundsException e) {
                    return buffer.append(parameterStirng.substring(parameterStirng.indexOf("\\u"))).toString();
                }
                try {
                    buffer.append((char)Integer.parseInt(substringOfUnicode.substring(2), 16));
                } catch (NumberFormatException e) {
                    buffer.append(substringOfUnicode);
                }
                parameterStirng= parameterStirng.substring(parameterStirng.indexOf("\\u")+6);
                logger.debug("The substring {} may contain unicode", parameterStirng);
            }
            buffer.append(parameterStirng);
        }
        return buffer.toString();
    }
    
}

测试结果截图如下:

104431_B28v_1770476.png


转载于:https://my.oschina.net/dengjianming/blog/516183

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值