1、request.setCharacterEncoding():用來確保發往服務器的參數以漢字的編碼來提取,設置從request中取得的值或從數據庫中取出的值。java
指定後能夠經過request.getParameter()獲取本身想要的字符串,若是沒有提早指定,則會按照服務器端默認的「iso-8859-1」來進行編碼;該方法只對post請求有效,對get請求無效;對於get請求,應該在server.xml中指定:URIEncoding=utf-8;mysql
注意:在執行request.setCharacterEncoding()以前不能執行request.getParameter()方法;sql
緣由:應該是在執行第一個getParameter()的時候,Java將會按照編碼分析全部的提交內容,然後續的getParameter()再也不進行分析,因此setCharacterEncoding()無效。而對於GET方法提交表單是,提交的內容在URL中,一開始就已經按照編碼分析提交內容,setCharacterEncoding()天然就無效。數據庫
2、response.setCharacterEncoding():設置HTTP 響應的編碼,用於設置服務器給客戶端的數據的編碼瀏覽器
通常不會用這個方法來設置響應編碼,服務器
通常使用response.setContentType()方法來設置HTTP 響應的編碼,同時指定了瀏覽器顯示的編碼;post
由於他在執行該方法通知服務器端以指定編碼進行編碼後,會自動調用response.setCharacterEncoding()方法來通知瀏覽器以指定編碼來解碼;使用此方法要在response.getWriter()執行以前或response提交以前;編碼