问题如标题所示,中文全部变成了Unicode编码.具体哪种不太清楚...
解决办法如下:
JAVA实现方法:
import java.io.UnsupportedEncodingException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class UnicodeTest {
private static Pattern pattern = Pattern.compile("\\&\\#(\\d+)");
public static void main(String[] args) throws UnsupportedEncodingException {
String str ="业务响应V3.0>缴费、充值>充值不成功>接入充值电话不成功>充值不成功";
System.out.println(tr(str));
}
public static String tr(String str){
str = str.replaceAll(">", ">"); //这里的& 和gt显示不出来自动换成了>
StringBuilder sb = new StringBuilder();
String[] childs = str.split(";");
for(String child : childs){
if(child.contains("&#")){
Matcher m =pattern.matcher(child);
while (m.find())
sb.append((char)Integer.valueOf(m.group(1)).intValue());
}else
sb.append(child);
}
return sb.toString();
}
}
最终能得到正确的中文: 业务响应V3.0>缴费、充值>充值不成功>接入充值电话不成功>充值不成功
但是需要说明的是,我这个也并不是万能的.比如说上面的字符串中有HTML的代码>所以需要根据不同的数据进行修改处理.
JS的处理方法:
function load(){
var str ="业务响应V3.0>缴费、充值>充值不成功>接入充值电话不成功>充值不成功";
U2A(str);
}
function U2A(str) { //Unicode -> ASCII转换
str = str.replaceAll(">",">");
var code = str.match(/&#(\d+);/g);
if (code != null){
for (var i=0; i<code.length; i++){
str = str.replace(code[i],String.fromCharCode(code[i].replace(/[&#;]/g, '')));
}
}
alert(str);
}
String.prototype.replaceAll = function(s1,s2) {
return this.replace(new RegExp(s1,"gm"),s2);
}