1,如何把Unicode转化为正常字符呢?
- /**
- * 把unicode转化为中文
- * @param str
- * @return
- */
- public static String unicodeToChinese(String str) {
- if (IsChineseUtil.isHasChinses2(str))//判断是否有中文字符
- return str;
- if (str.indexOf("\\u") == -1 || str == null || "".equals(str.trim())) {/*若不是unicode,则直接返回*/
- return str.replaceAll("\\\\ ", " ");//删掉英文中的\,such as "default\ value1"
- /* 主要是针对 zk 中的国际化问题 */
- }
- StringBuffer sb = new StringBuffer();
- if(!str.startsWith("\\u")){/*若开头不是unicode,如“abc\u4e2d\u56fd” */
- int index=str.indexOf("\\u");
- sb.append(str.substring(0, index));
- str=str.substring(index);
- }
- if (str.endsWith(":")) /*如“\u4e2d\u56fd:” */{
- str = str.substring(0, str.length() - 1);
- }
- String[] chs = str.trim().split("\\\\u");
- for (int i = 0; i < chs.length; i++) {
- String ch = chs[i].trim();
- if (ch != null && !"".equals(ch)) {
- int length_ch=ch.length();
- if(length_ch>4){
- length_ch=4;
- }//中文的长度是4,英文的长度是2
- sb.append((char) Integer.parseInt(ch.substring(0, length_ch), 16));//按照十六进制解析
- if (ch.length() > 4) {
- sb.append(ch.substring(4));
- }
- }
- }
- return sb.toString();
- }
应用:
- selectContent=Conversion.unicodeToChinese(selectContent);