request和response的setCharacterEncoding()方法
1、pageEncoding=”UTF-8”的作用是設(shè)置JSP編譯成Servlet時(shí)使用的編碼。
2、contentType=”text/html;charset=UTF-8”的作用是指定服務(wù)器響應(yīng)給瀏覽器的編碼。
JSP要經(jīng)過兩次的“編碼”,第一階段會用pageEncoding,第二階段會用utf-8至utf-8,第三階段就是由Tomcat出來的網(wǎng)頁,
用的是contentType。
第一階段是jsp轉(zhuǎn)譯(翻譯)成.Java,它會根據(jù)pageEncoding的設(shè)定讀取jsp,結(jié)果是由指定的編碼方案翻譯成統(tǒng)一的UTF-8
JAVA源碼(即.java),如果pageEncoding設(shè)定錯(cuò)了,或沒有設(shè)定,出來的就是中文亂碼。
第二階段是從源碼(.java)編譯到字節(jié)碼文件(.class),不論JSP編寫時(shí)候用的是什么編碼方案,經(jīng)過這個(gè)階段的結(jié)果全部是UTF-8的encoding的java源碼。
JAVAC用UTF-8的encoding讀取java源碼,編譯成UTF-8
encoding的二進(jìn)制碼(即.class),這是JVM對常數(shù)字串在二進(jìn)制碼(java encoding)內(nèi)表達(dá)的規(guī)范。
第三階段是Tomcat(或其的application
Container)載入和執(zhí)行階段二的來的JAVA二進(jìn)制碼,輸出的結(jié)果,也就是在客戶端見到的,這時(shí)隱藏在階段一和階段二的參數(shù)contentType就發(fā)揮了功效
3、request.setCharacterEncoding(“UTF-8”)的作用是設(shè)置對客戶端請求和數(shù)據(jù)庫取值時(shí)的編碼,不指定的話使用iso-8859-1。(只解決POST亂碼)
解決GET亂碼可以修改tomcat的server.xml中的 URIEncoding屬性
或使用
str = new String(str.getBytes(“iso-8859-1”),“utf-8”);
4、response.setCharacterEncoding(“UTF-8”)的作用是指定服務(wù)器響應(yīng)給瀏覽器的編碼。
5、response.setContentType(“text/html;charset=utf-8”)的作用是指定服務(wù)器響應(yīng)給瀏覽器的編碼。同時(shí),瀏覽器也是根據(jù)這個(gè)參數(shù)來對其接收到的數(shù)據(jù)進(jìn)行重新編碼(或者稱為解碼)。
對于發(fā)送數(shù)據(jù),服務(wù)器按照response.setCharacterEncoding—contentType—pageEncoding的優(yōu)先順序,對要發(fā)送的數(shù)據(jù)進(jìn)行編碼。
總結(jié)
以上是生活随笔為你收集整理的request和response的setCharacterEncoding()方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中的抽象类
- 下一篇: 使用 Servlet 读取表单数据