1) 采用java6之后自带的base64自带的加密解密方法,将中文字符全部转换成英文和符号,从而可以避免中文转码的问题。
public class Base64Util
{
// 加密
public static String getBase64(String str)
{
String s = null;
byte[] b = null;
if(str != null)
{
try
{
b = str.getBytes("utf-8");
}
catch(UnsupportedEncodingException e)
{
e.printStackTrace();
}
if(b != null)
{
s = new BASE64Encoder().encodeBuffer(b).trim();
}
}
return s;
}
// 解密
public static String getFromBase64(String s)
{
byte[] b = null;
String result = null;
if(s != null)
{
BASE64Decoder decoder = new BASE64Decoder();
try
{
b = decoder.decodeBuffer(s);
result = new String(b, "utf-8");
}
catch(Exception e)
{
e.printStackTrace();
}
}
return result;
}
}
2) 采用base64编码之后,里面会有诸如(=,”,%...)这样的特殊符号,这个时候如果直接用来在url中传参的话会报String无结束”的错误等等,非常头疼。这个时候,可以再做一件事,对base64编码之后的结果进行下面处理:
URLEncoder.encode(searchContent, "UTF-8");
处理完之后,像+,=..这些就会被编码。。不会再对url传参构成影响。
当用url传参时,会自动转换成urlencoder之前的对应的符号,因此也无需再进行decode处理。
利用上面的两步 ,可以解决中文url传递乱码问题。