代碼:
<sccr //uploadForm.action="testupload.jsp";
uploadBegin();
uploadForm.submit();
</script>
這里先對表單里的數據進行編碼.encodeURL這個方法轉出來的編碼是UTF-8的.
然后在后臺的上傳程序里在對他進行解碼
if (item.isFormField()) {
field.add(URLDecoder.decode(item.getString(),"UTF-8"));
}
問我為什么要這么做?說起來偶也非常的郁悶.在一個上傳的程序中.表單里提交的field數據在后臺接收的時候全都變成了亂碼(???).濾鏡和用new String的方式進行轉碼我都試過了.(其他的表單提交程序不會出現亂碼問題.我的頁面到數據庫都是GB2312的編碼,包括濾鏡).
我覺得有兩種可能會出現這種情況:一是weblogic自己對我提交的數據不知道做了什么編碼,還有一種可能就是fileupload這個jar包內部對requst的數據進行了編碼.但亂碼問題只是出現在liunx的平臺上.
無奈之下我只好在提交前對數據進行utf-8編碼.沒想到亂碼問題竟然解決了.但我還是不知道什么原因會導致這種情況.而java無法在提交前對數據進行編碼,非凡是在field個數不確定的情況.只好用jscript提供的函數進行編碼了.上面的程序不是最理想的.因為在提交的那一時間里用戶會看到field的數據都變成了utf-8.可能會讓用戶感覺到不是很友好.解決的方法是用hidden框去提交數據.
新聞熱點
疑難解答