由于需要将类似如下的字符串中的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();
}
}
测试结果截图如下: