get提交中文亂碼問題
阿新 • • 發佈:2019-02-18
最近,因為在維護的一個專案,在頁面用自定義標籤get方式提交,所以在頁面輸入關鍵字提交到後臺的時候,會有亂碼的現象,所以寫文章,為了下次更方便的使用。主要是使用了Base64
jsp頁面程式碼片段
<c:set var="brandAcceptParam" value="encodeKeyWords,attrs,clsId,promotion,brandId,begPrice,endPrice,fsop,searchTag,services,local,listingTags"/>
<a href="<search:urlTag actionUrl='/search.do'acceptParamNames="${brandAcceptParam}"/>">分類名</a>
<form name="thumbsearch" action="/item/search.do" method="post"> <input type="hidden" name="encodeKeyWords" value="${encodeKeyWords}"/> <input type="text" name="keywords" placeholder="在當前位置下搜尋" value="${keywords!=null?keywords:''}"/> <button type="submit">搜尋</button> </form>
/** 對字串引數進行base64編碼 */ public static String seoUrlBase64Encoder(String value){ if(value == null) return null; BASE64Encoder encoder = new BASE64Encoder(); try { value = encoder.encode(value.getBytes("utf-8")); value = value.replaceAll("[\r\n]", "").replaceAll("/", "_");//BASE64Encoder的encode方法會在76個字元後新增\r\n value = value.replace(' ', '+'); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return value; }
/** 對字串引數進行base64解碼 */
public static String seoUrlBase64Decoder(String value){
if(value == null) {
return null;
}
String str = null;
BASE64Decoder decoder =new BASE64Decoder();
try {
value = value.replace(' ', '+');
value = value.replaceAll("_", "/");
str = new String(decoder.decodeBuffer(value),"utf-8");
str = str.trim();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}