GET获取数据之后,服务器返回的中文都是编码,所以写了一个简单的方法对其中文编码进行解码。
/*
* 对中文解码
*/
public static String unicodeString(String str)
{
str = (str == null ? "" : str);
StringBuffer sb = new StringBuffer(1000);
int index=str.indexOf("\\u");
if (index == -1)
{
// 如果不是unicode码则原样返回
return str;
}
int length=str.length();
int i=0;
while(index>=0&&index<=length-6)
{
sb.append(str.substring(i, index));
int c = 0;
i=index+2;
while (i < index+6)
{
char tempChar = str.charAt(i);
int t = 0;
switch (tempChar)
{
case 'a':
case 'A':
t = 10;
break;
case 'b':
case 'B':
t = 11;
break;
case 'c':
case 'C':
t = 12;
break;
case 'd':
case 'D':
t = 13;
break;
case 'e':
case 'E':
t = 14;
break;
case 'f':
case 'F':
t = 15;
break;
default:
t = tempChar - 48;
break;
}
if(t<=15&&t>=0)
{
c += t * ((int) Math.pow(16, (index+5-i)));
i++;
}
else
{
break;
}
}
// /u后面必须有4个字符符合条件,才是一个中文
if(i==index+6)
{
sb.append((char) c);
index=str.indexOf("\\u",i);
}
else
{
//虽然出现/u,但是依然不是中文编码,所以把这些字符全部添加进sb
sb.append(str.substring(index, i));
index=str.indexOf("\\u",i);
}
}
if(i<length)
{
sb.append(str.substring(i));
}
return sb.toString();
}