jsp頁面上先給中文字符編碼 http://xxx.xxx.com?filename=<%=java.net.URLEncoder.encode("哥就是中文亂碼.pdf","GB2312")%> 或者http://xxx.xxx.com?filename=<%=java.net.URLEncoder.encode("哥就是中文亂碼.pdf","UTF-8")%>
後臺servlet中 String fileName = request.getParameter("filename");
或者 String fileName = request.getParameter("filename");
然而並沒有什麼卵用,亂碼還是亂碼。於是放棄百度,查servlet源碼,終於知道了原因。就是由於在request.getParameter("name")之前會自動做一次解碼的工作(無法認爲干預),而且是默認的ISO-8859-1解碼。所以,在使用java.net.URLEncoder.encode()和java.net.URLDecoder.decode(),各用兩次。
jsp中修改爲:
http://xxx.xxx.com?filename=<%=java.net.URLEncoder.encode(java.net.URLEncoder.encode("哥就是中文亂碼.pdf","GB2312"),"GB2312")%> 或者
http://xxx.xxx.com?filename=<%=java.net.URLEncoder.encode(java.net.URLEncoder.encode("哥就是中文亂碼.pdf","UTF-8"),"UTF-8")%>
後臺servlet修改爲:
String fileName = request.getParameter("filename");
或者 String fileName = request.getParameter("filename");
完美!!!
就這樣,無聊的一天又過去了......