jsp post中文亂碼問題

2022-06-25 08:30:13 字數 2179 閱讀 1626

在 iso-8859-1,gb2312, utf-8 以及任意一種編碼格式下,英文編碼格式都是一樣的,每個字元佔8位,而中文就麻煩了,在gb2312 下乙個中文佔 16位,兩位元組,而在utf-8 下乙個中文要佔24位,三位元組。瀏覽器在不知道確定編碼方式的情況下,就會把這些字元從中間截斷,再顯示的時候就亂掉了。所以,想要解決亂碼問題,就是要告訴瀏覽器我們到底使用了什麼樣的編碼方式。

為了獲得正常顯示的中文,需要注意以下幾步:

1. 因為伺服器要先從本地讀取jsp檔案,然後經過處理後寫入響應,所以我們首先要知道的就是 jsp檔案的編碼格式。從問題的源頭著手解決。

在咱們用的windowxp 下,檔案預設的編碼格式是gb2312。

2. 我們要在http 的響應(response)中新增編碼資訊,使用如下方式:

<%

@ page contenttype="

text/html; charset=gb2312

"%>

這段要放在 jsp頁面的第一行,用來指定響應的型別和編碼格式,contenttype 為text/html就是html 內容,charset表示編碼為 gb2312。這樣瀏覽器就可以從響應中獲得編碼格式了。

這種<%@ %>的形式叫做jsp指令(directive),現在接觸到的是page指令,還有 include和 taglib指令,我們會在後面陸續講到。

3. 還需要在html 中指定編碼格式。

meta 部分用來指定當前html 的編碼格式,注意這一段要放在head 標籤中,並且放到head 標籤的最前面,如果不是最前面 ie下可能會出現問題,尤其是在 title 中有中文的情況下。

完成了以上三段檢驗,我們才能保證輸出的 jsp頁面會正常顯示中文。

>使用者名稱

label

><

label

><

input

tyie

="text"

name

="username"

>

label

>

<

br />

<

input

type

="submit"

value

="提交"

>

form

>

body

>

html

>

post處理頁面:

<%@ page contenttype="text/html; charset=gb2312"%>

<%

request.setcharacterencoding(

"gb2312

");

%>

<%

out.print(request.getparameter("username"));

%>

jsp post中文亂碼問題

在 iso 8859 1,gb2312,utf 8 以及任意一種編碼格式下,英文編碼格式都是一樣的,每個字元佔8位,而中文就麻煩了,在gb2312 下乙個中文佔 16位,兩位元組,而在utf 8 下乙個中文要佔24位,三位元組。瀏覽器在不知道確定編碼方式的情況下,就會把這些字元從中間截斷,再顯示的時...

jsp post表單提交中文亂碼

今天遇到乙個bug,jsp以表單提交時會有中文亂碼,情況如下 post表單如下 後台 如下 readerinfo.setaddress address readerinfo.setbirth nbirth readerinfo.setname name readerinfo.setreaderid ...

中文亂碼問題

母頁 tran cel.jsp?p user id p user id p paraxml mytran cel paraxml ie8對window.open二進位製流會遮蔽,用二次請求解決該問題 modify by 20120731。mytran cel paraxml encodeuri my...