java Unicode编码转中文

java Unicode编码转中文网上找到的一章Unicode编码转中文使用后发现在夹杂这非Unicode编码的字符串在做解析的时候会有报错的现象,根据Unicode编码特性加以改进

/*
* unicode编码转中文
*/
public static String decodeUnicode(final String dataStr) {
    try{
        final StringBuffer buffer = new StringBuffer(dataStr==null?"":dataStr);
        if(StringUtils.isNotBlank(dataStr) && dataStr.contains("\\u")) {
            buffer.delete(0,buffer.length());
            int start = 0;
            int end = 0;
            while (start > -1) {
                end = dataStr.indexOf("\\u", start + 2);
                String a="";//如果夹着非unicode编码的字符串,存放在这
                String charStr = "";
                if (end == -1) {
                    if(dataStr.substring(start + 2, dataStr.length()).length()>4){
                        charStr = dataStr.substring(start + 2, start + 6);
                        a = dataStr.substring(start + 6, dataStr.length())  ;
                    }else{
                        charStr = dataStr.substring(start + 2, dataStr.length());
                    }
                } else {
                    charStr = dataStr.substring(start + 2, end);
                }
                char letter = (char) Integer.parseInt(charStr.trim(), 16); // 16进制parse整形字符串。
                buffer.append(new Character(letter).toString());
                if(StringUtils.isNotBlank(a)){
                    buffer.append(a);
                }
                start = end;
            }
        }
        return buffer.toString();
    } catch (Exception e){
        logger.error(dataStr+" 字符串转换失败",e);
    }
  return dataStr;
}

今天的文章java Unicode编码转中文分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/26655.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注