private static String decodeUnicode(String str){
char mchar;
int len=str.length();
StringBuffer sb=new StringBuffer(len);
for(int i=0;i<len;){
mchar=str.charAt(i++);
if(mchar=='\\'){
mchar=str.charAt(i++);
if(mchar=='u'){
int value=0;
for(int j=0;j<4;j++){
mchar=str.charAt(i++);
switch (mchar) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
value=(value<<4)+mchar-'0';
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
value=(value<<4)+10+mchar-'a';
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
value=(value<<4)+10+mchar-'A';
break;
default:
throw new IllegalArgumentException("Malformed \\uxxxx encoding.");
}
}
sb.append((char)value);
}else{
if(mchar=='t'){
mchar='\t';
}else if(mchar=='r'){
mchar='\r';
}else if(mchar=='n'){
mchar='\n';
}else if(mchar=='f'){
mchar='\f';
}
sb.append(mchar);
}
}else{
sb.append(mchar);
}
}
return sb.toString();
}
char mchar;
int len=str.length();
StringBuffer sb=new StringBuffer(len);
for(int i=0;i<len;){
mchar=str.charAt(i++);
if(mchar=='\\'){
mchar=str.charAt(i++);
if(mchar=='u'){
int value=0;
for(int j=0;j<4;j++){
mchar=str.charAt(i++);
switch (mchar) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
value=(value<<4)+mchar-'0';
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
value=(value<<4)+10+mchar-'a';
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
value=(value<<4)+10+mchar-'A';
break;
default:
throw new IllegalArgumentException("Malformed \\uxxxx encoding.");
}
}
sb.append((char)value);
}else{
if(mchar=='t'){
mchar='\t';
}else if(mchar=='r'){
mchar='\r';
}else if(mchar=='n'){
mchar='\n';
}else if(mchar=='f'){
mchar='\f';
}
sb.append(mchar);
}
}else{
sb.append(mchar);
}
}
return sb.toString();
}