// 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"));
}
[Java基礎]一個我使用的URL解碼方法,支持使用IE指定UTF8和GBK
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.