一、有必要了解一些基本的編碼知識
這篇字符編碼筆記是必讀的
jsp的三次編碼
第一階段:JVM將.jsp文件編譯為.java文件。JVM先讀取pageEncoding的值,根據(jù)該值去讀取.jsp文件,然后由指定的編碼方案生成UTF-8的.java文件。
第二階段:JVM將.java文件轉(zhuǎn)換為.class文件,從UTF-8至UTF-8。這個過程就與任何編碼的設(shè)置都沒有關(guān)系了,經(jīng)過這個階段后.java文件就轉(zhuǎn)換成了統(tǒng)一的UTF-8編碼的.class文件了。
第三階段:服務(wù)器將處理的結(jié)果返回給瀏覽器,這個階段則依靠contentType的charset,如果設(shè)置了charset則瀏覽器就會使用指定的編碼格式進行解碼,否則采用默認的ISO-8859-1編碼格式進行解碼處理。
jsp中的編碼設(shè)置
pageEncoding:<%@ page pageEncoding=”UTF-8”%>
上文中第一階段,使用該值去讀取jsp文件,為避免中文亂碼,跟jsp文件編碼一致;對服務(wù)器響應(yīng)進行重新編碼,即jsp的輸出流在瀏覽器中顯示的編碼(不是主要作用)。
contentType: <%@ page contentType=”text/html;charset=UTF-8”%>
使用該值對服務(wù)器響應(yīng)進行重新編碼,即jsp的輸出流在瀏覽器中顯示的編碼;對表單get和post請求數(shù)據(jù)編碼;上文中第一階段,使用該值去讀取jsp文件(不是主要作用)。
< META http-equiv=”Content-Type” content=”text/html;charset=UTF-8”>