在实际使用时会存在.net语言中的encode。然后java中decode出来的结果不一样,以下为解决办法
/**
* add by
* @param str
* @param enc
* @return
* @throws UnsupportedEncodingException
*/
public static String decode(String str, String enc) throws UnsupportedEncodingException{
if (enc.length() == 0) {
throw new UnsupportedEncodingException ("URLDecoder: empty string enc parameter");
}
List l = new LinkedList();
int strLen = str.length();
for(int i=0;i<strLen;++i){
char c = str.charAt(i);
switch (c) {
case '+':
l.add((byte)' ');
break;
case '%':
byte b = (byte)Integer.parseInt(str.substring(i+1, i+3),16);
l.add(b);
i+=2;
break;
default:
l.add((byte)str.charAt(i));
break;
}
}
byte[] bs = new byte[l.size()];
for(int i=0;i<l.size();++i)
bs[i] = (Byte)l.get(i);
return new String(bs,enc);
}