public static String unescape(Object @string){
String str = Convert.ToString(@string);
int n = str.Length;
StringBuilder ustr = new StringBuilder(n);
char c; int d1, d2, d3, d4;
for (int k = -1; ++k < n; ustr.Append(c)){
c = str[k];
if (c == '%'){
if (k+5 < n && str[k+1] == 'u'
&& (d1 = HexDigit(str[k+2])) != -1
&& (d2 = HexDigit(str[k+3])) != -1
&& (d3 = HexDigit(str[k+4])) != -1
&& (d4 = HexDigit(str[k+5])) != -1){
c = (char)((d1<<12)+(d2<<8)+(d3<<4)+d4);
k += 5;
}else if (k+2 < n
&& (d1 = HexDigit(str[k+1])) != -1
&& (d2 = HexDigit(str[k+2])) != -1){
c = (char)((d1<<4)+d2);
k += 2;
}
}
}
return ustr.ToString();
}