package com.ascrm.util;
import java.io.UnsupportedEncodingException;
/**
* @author Roly
* TODO
*/
public class EncodeUtils {
public static String decode(String s,String charset) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '+':sb.append(' ');
break;
case '%':
try {
sb.append((char) Integer.parseInt(s.substring(i+1, i+3),
16));
i += 2;
} catch (NumberFormatException e) {
//原样加进去
sb.append(s.substring(i+1,i+3));
i += 2;
} catch (StringIndexOutOfBoundsException e) {
String rest = s.substring(i);
sb.append(rest);
if (rest.length()==2)
i++;
}
break;
default:sb.append(c);
break;
}
}
//需要转码
String result = sb.toString();
byte [] bytes;
try {
bytes=result.getBytes("ISO-8859-1");
result=new String(bytes,charset);
}catch(Exception e) {
System.out.println("trans error: iso8859-1 to "+charset+"!");
}
return result;
}
public static String decode(String s){
return decode(s,"utf-8");
}
/**
* ===================================================
* 检验字符串,如果为汉字则转为ASCII代码。如果为英文则原样返回。
* ===================================================
*/
public static String encode(String s,String charset) {
String result = s;
try {
result = java.net.URLEncoder.encode(s, charset);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
public static String encode(String s) {
return encode(s,"utf-8");
}
}