亂碼: 中文引起的亂碼[gbk: 2位元組乙個字元 utf-8: 3位元組乙個字元 iso8859-1: 1位元組乙個字元]
原因: 編碼解碼格式不統一
瀏覽器編碼解碼格式: -情況如果交給瀏覽器的響應報文設定了響應編碼的響應頭,瀏覽器優先使用 -
如果響應頭中沒有編碼,瀏覽器則去頁面中查詢charset
="utf-8">使用 -
如果報文和頁面都沒有設定編碼,瀏覽器使用系統預設的編碼gbk
伺服器編碼解碼格式: -
iso8859-1
1、請求亂碼:瀏覽器封裝資料(編碼)傳送給伺服器解析(解碼)出現亂碼
瀏覽器編碼格式:utf-8get請求亂碼:伺服器解碼格式:iso8859-1
解決:無論什麼情況都可以解決:方案1: 使用iso8859
-1解析utf
-8出現了亂碼 原理,不用
字串重構
將iso8859
-1亂碼字串通過iso8859
-1還原為位元組陣列
使用utf
-8重構
byte
bs = username.getbytes("iso8859
-1");
username
= new string(
bs, "utf
-8");
方案2: get請求時,請求引數在請求首行的post請求亂碼:url位址後攜帶[get請求只能用來攜帶請求引數]
設定request物件解析請求首行資料的編碼即可 在
tomcat
配置檔案:server.xml中 8080埠號所在的標籤新增uriencoding="utf
-8"屬性 -
解決了當前工作空間所有請求的中文亂碼問題
方案3: post請求時, 請求引數在請求體中攜帶,設定伺服器解析請求體引數的編碼[post請求可以上傳檔案或上傳請求引數] -2、響應亂碼:伺服器封裝資料(編碼)響應給瀏覽器解析(解碼)出現亂碼沒有統一解決的方案,每個
servlet
根據自己接受的資料型別單獨處理 -
在使用request物件之前設定解碼格式:request.setcharacterencoding("utf
-8");
在方案2: 常用servlet
檔案中編寫中文字串是utf
-8的編碼
response物件是伺服器封裝使用的,編碼格式是iso8859
-1,使用iso8859
-1將utf
-8的資料寫入到響應體中[已經出現亂碼]
瀏覽器得到響應報文,沒有在響應頭中獲取到編碼格式,也沒有在頁面中獲取編碼格式,就使用系統預設的gbk解析iso8859
-1的頁面[又亂碼了]
解決:方案1: 不用
1.1 設定response物件的編碼格式為utf
-8 :在使用response物件之前
response.setcharacterencoding("utf
-8");
1.2 設定瀏覽器的解碼格式為utf-8
response.setheader("content-type", "text/
html
;charset
=utf
-8");//相當於設定了response物件的編碼和告訴瀏覽器如何解析響應體內容
response.setcontenttype("text/
html
;charset
=utf
-8");
java web 中亂碼問題
string name new string request.getparameter username getbytes iso 8859 1 gbk 這樣的接受引數的方法是乙個通用的方法,不管是對get或post提交的方法都有效 一 中文亂碼產生的原因 a 亂碼有很多種,這裡所說的是指web傳入...
JAVA WEB開發中處理亂碼彙總
在開發中難免會遇到中文顯示亂碼的問題,亂碼問題是乙個很棘手的問題,常常令程式設計師抓狂。現在把我使用的幾種解決亂碼的方案和大家共享!一 表單提交的亂碼處理 表單提交分為get和post兩種提交方式。兩種方式的亂碼解決又不一樣,用post提交只需要在接受的時候加上request.setcharacte...
JavaWeb中的路徑問題
要知道我們在ide中新建的專案,當發布到伺服器上時,src中內容是不會發布的,發布的是src中編譯好的class檔案,且class檔案放在webcontent下的web inf中的乙個檔案,當我們去訪問發布的 時路徑會發生變化!絕對路徑由伺服器解析,到專案名 要區分相對路徑和絕對路徑。更要區分哪個是...