1. 程式人生 > >get提交中文亂碼問題

get提交中文亂碼問題

最近,因為在維護的一個專案,在頁面用自定義標籤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;
	}