解決編碼問題

上傳文件到服務器的時候會出現編碼問題,亂碼的緣由是瀏覽器和服務器使用了不一樣的編碼和解碼方式致使的。java

瀏覽器的表單中包含漢字,瀏覽器使用的是utf-8對中文表單數據進行編碼並傳到服務器,服務器默認使用的是iso-8859-1進行解碼,就會出現亂碼的問題。咱們經常使用這句話瀏覽器

request.setCharacterEncoding("utf-8");

來告訴服務器用utf-8進行解碼,這句話加上後,在request.getParameter()獲取表單內容時就會默認用utf-8進行解碼,這種方式解決了post的提交方式,可是get的提交方式解決不了,由於get提交方式的信息保存在URL中,在訪問服務器的過程當中就已經對錶單數據進行解碼並且用的是服務器默認的解碼方式即iso-8859-1,因此get方式仍會亂碼。get方式的解決辦法,服務器

new String(string.getBytes("ISO-8859-1"), "utf-8");

這句代碼不用寫在servlet的開頭,先獲取到已經通過服務器默認編碼的表單內容,再用這句代碼進行解碼就獲得正確的解碼錶單信息。post

string.getBytes("ISO-8859-1")的返回值是字節,意思是將已經用iso-8859-1解碼的表單信息再用iso-8859-1編碼成字節,而後在用utf-8進行解碼。這樣就解決了亂碼的問題。編碼

 

文件上傳的時候文件名亂碼,表單中包含enctype="multipart/form-data"這樣一句話,因此request.getParameter()沒辦法取到值,前面說到在使用request.getParameter()的時候會使用utf-8進行解碼,這裏沒用到這個方法天然就會使用服務器默認的解碼方式,致使亂碼,文件名的處理方式是和get提交的處理方式同樣code

new String(string.getBytes("ISO-8859-1"), "utf-8");

用這句話來處理。orm

相關文章
相關標籤/搜索