Jsp字元編碼

2022-03-12 06:01:44 字數 1323 閱讀 8771

參考:

乙個jsp檔案如下:

servlet text: 中文

body

>

html

>

="utf-8"

決定了jsp編譯成servlet時所使用的編碼,比如「中文」兩個字將以utf-8的形式儲存。但是如果jsp文字檔案本身不是utf-8格式的,那麼編譯時就已經產生編碼不一致的現象,因此無論怎樣客戶端顯示的都是亂碼。

pageencoding

="utf-8"

="text/html; charset=gb2312"

的編碼無關,contenttype告知瀏覽器該響應是以那種格式編碼的,它是response header的一部分,預設情況下瀏覽器會直接以這種編碼來解析這個來自於伺服器端的響應,而不管響應的html是什麼內容。響應內容的編碼在這時已確定,客戶端無法更改,可以變的只能是以何種編碼格式去解析。

="text/html; charset=utf-8"只是一段html字串,跟、之類的內容沒什麼兩樣,至於瀏覽器怎麼去解讀不用去管。正常情況下這個meta的charset應該設定為與contenttype一致,避免檢視html源**時的誤讀。

如果服務端使用tomcat,且對url引數的解析沒有做任何特別處理,那麼必然會導致中文亂碼。因為客戶端以unicode編碼傳遞引數,而tomcat預設使用iso-8859-1來解析。比如"?para=中文"將會以"?para=%e4%b8%ad%e6%96%87"來傳遞,而tomcat中使用request.getparameter時卻將e4轉換成byte型,無法逆轉。因此必須修改tomcat的配置。在server.xml中加入usebodyencodingforuri="true">,這樣就可以通過顯式地在jsp中指定編碼型別來解析中文引數,如request.setcharacterencoding("utf-8"),同時也說明這一句在沒有修改tomcat配置的情況下是不起作用的。

JSP字符集編碼

jsp servlet中的幾個編碼的作用。在jsp servlet 中主要有以下幾個地方可以設定編碼,pageencoding utf 8 contenttype text html charset utf 8 request.setcharacterencoding utf 8 和response...

jsp編碼討論

在解決亂碼問題前,必須先搞清楚幾個相關的問題。為每個jsp頁面設定了其編碼格式 utf 8 但傳遞資料到另一頁麵時依然顯示為亂碼?首先要需要了解的是web容器預設編碼是iso 8859 1,乙個漢字占用兩個位元組,而在utf 8中乙個漢字占用三個位元組。所以在資料傳遞過程中,必須手動設定容器編碼格式...

JSP的編碼問題

真是太奇怪了。今天做jsp的作業的時候,從資料庫取出來的中文直接set到session裡的話,再取出來竟然變成了亂碼。問老師,老師竟說這是正常的。說有些時候,jsp放資料到session裡會亂碼,而有些時候,又不會亂碼。會不會亂碼,存在不確定性。這太鬱悶了!老師說,遇到這種問題的時候,需要把字串的編...