// url中获取参数
// inputEncoding
String inputEncoding = "GBK";
String ie = request.getParameter("ie");
if (StringUtil.equalsIgnoreCase("UTF-8", ie) || StringUtil.equalsIgnoreCase("UTF8", ie)) {
inputEncoding = ie;
}
// keywords(设置tomcat容器的URIEncoding="ISO-8859-1")
// 首先从request获取请求中的关键词,此时keywords3的值可能为:
// (1)如果请求中的关键词是"手机"的GBK原生字节码"[0xCA][0xD6][0xBB][0xFA]":那么此时keywords3 = 乱码
// (2)如果请求中的关键词是"手机"的GBK URLEncoding后的编码"%CA%D6%BB%FA":那么此时keywords3 = %CA%D6%BB%FA
// (3)如果请求中的关键词是"手机"的UTF8原生字节码"[0xE6][0x89][0x8B][0xE6][0x9C][0xBA]":那么此时keywords3 = 乱码
// (4)如果请求中的关键词是"手机"的UTF8 URLEncoding后的编码"%E6%89%8B%E6%9C%BA":那么此时keywords3 = %E6%89%8B%E6%9C%BA
String keywords3 = request.getParameter("keywords");
if (StringUtil.isNotBlank(keywords3)) {
String keywords2 = null;
try {
// 然后按照inputEncoding转换keywords3为keywords2,keywords2的值可能为:
// (1)如果keywords3 = 乱码:那么此时keywords2 = 手机
// (2)如果keywords3 = %CA%D6%BB%FA:那么此时keywords2 = %CA%D6%BB%FA
// (3)如果keywords3 = %E6%89%8B%E6%9C%BA:那么此时keywords2 = %E6%89%8B%E6%9C%BA
keywords2 = new String(keywords3.getBytes("ISO-8859-1"), inputEncoding);// “中文”或"%C6%A1%BE%C6"
} catch (UnsupportedEncodingException e1) {
keywords2 = keywords3;
}
// 然后按照inputEncoding转换keywords2为keywords,keywords的值可能为:
// (1)如果keywords2 = 手机:那么此时keywords = 手机
// (2)如果keywords2 = %CA%D6%BB%FA:那么此时keywords = 手机
// (3)如果keywords2 = %E6%89%8B%E6%9C%BA:那么此时keywords = 手机
String keywords = UrlEncodeUtil.decode(keywords2, inputEncoding);// “中文”
// 只保留keywords的前40个字符
if (keywords.length() > 40) {
keywords = keywords.substring(0, 40);
}
param.setKeywords(keywords);
param.setGbkKeywords(UrlEncodeUtil.encode(keywords, "GBK"));
}