日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tomcat编码配置gbk_tomcat编码乱码问题

發(fā)布時間:2023/12/9 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tomcat编码配置gbk_tomcat编码乱码问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近又碰到了中文亂碼問題,這里我沒有把數(shù)據(jù)庫牽扯進(jìn)來,先說下我的環(huán)境,servlet容器使用Tomcat6.0,瀏覽器FireFox3.0、IE6,涉及字符編碼設(shè)置的地方我的思路就是編碼的地方都統(tǒng)一使用UTF

-8,具體配置如下:

1.所有頁面的charset設(shè)置為UTF-8。

2.Tomcat的URIEncoding默認(rèn)是ISO-8859-1,而我設(shè)置為UTF-8,主要是想解決中文命名的文件以及請求以get方式提交有可能出現(xiàn)的亂碼問題(但是瀏覽器在地址欄中的中文編碼默認(rèn)是gbk不是頁面的

charset)。

3.添加過濾器,調(diào)用request.setCharacterEncoding("utf-8")方法將request的字符集設(shè)定為utf-8,解決請求以post方式提交的亂碼問題。

其實這樣的設(shè)置貌似是不會再出現(xiàn)亂碼問題了,不過,問題依舊來了!

我把用戶發(fā)送請求方式不同引起的中文問題劃分了四種類型:

1、表單的get提交

2、表單的post提交

3、頁面鏈接傳遞中文參數(shù)

4、地址欄中參數(shù)直接輸入中文提交

1.首先我們看表單get方式提交

瀏覽器根據(jù)頁面的charset編碼方式對頁面進(jìn)行編碼,然后提交至服務(wù)器,首先進(jìn)入對應(yīng)的字符編碼過濾器(如果有的話),不過Tomcat6.0對于get提交方式采用的是server.xml文件中的

URIEncoding編碼方式,而并不會采用過濾器中設(shè)置的編碼,那么根據(jù)我的環(huán)境設(shè)置,jsp頁面都使用UTF-8的編碼,Servlet容器的URIEncoding也設(shè)置為UTF-8,則servlet不用進(jìn)行轉(zhuǎn)碼即可正確解碼,獲

得正常的中文字符串。那么,響應(yīng)頁面的中文因為頁面的統(tǒng)一編碼(UTF-8)自然也會正常顯示。當(dāng)然,如果我們Tomcat的URIEncoding設(shè)置為其他非UTF-8的編碼方式時,頁面的內(nèi)容進(jìn)入Tomcat解析時,因

為Tomcat和頁面的編碼不統(tǒng)一,就需要轉(zhuǎn)碼。

2.表單的post提交

對于這種方式的請求,request.setCharacterEncoding("一般來自于web.xml中過濾器設(shè)置的參數(shù)")方法進(jìn)行編碼設(shè)置將會產(chǎn)生作用,struts的表單提交方式默認(rèn)為post方式,那么按照上面我的環(huán)境設(shè)置

,頁面,容器,都采用UTF-8編碼方式,就不會產(chǎn)生中文亂碼問題。

3.頁面鏈接中傳遞中文參數(shù)

我虛擬一個這樣的場景,請求頁面中有如下代碼

String username = "編輯";

%>

頁面中鏈接傳遞中文

對于這種方式,我們需要先將參數(shù)使用統(tǒng)一的編碼方式編碼,將編碼后的字符放入鏈接,這里我對參數(shù)以UTF-8方式編碼,如下

String username = java.net.URLEncoder.encode("編輯","UTF-8");

%>

那么這樣我們也不會產(chǎn)生中文亂碼問題

4.地址欄中參數(shù)直接輸入中文提交

例如瀏覽器地址欄中輸入"http://localhost:8080/helloapp.do?username=編輯"提交,對于這種方式,瀏覽器不會采用頁面的charset方式對URL中的中文進(jìn)行編碼后提交至服務(wù)器(IE,FireFox都一樣),

而是采用系統(tǒng)的GBK轉(zhuǎn)碼為ISO-8859-1之后提交至Servlet容器,那么,如果對于前三種方式我們所做的設(shè)置,在這里就有問題了,因為進(jìn)入容器時中文進(jìn)行了GBK至ISO-8859-1的轉(zhuǎn)碼,而之前我們的

Servlet容器URIEncoding設(shè)置為UTF-8,當(dāng)我們使用request.getParameter("username")時,相當(dāng)于又進(jìn)行了這樣的流程GBK--&gtISO-8859-1--&gtUTF-8

綜上,對于亂碼問題,前三種方式是一般用戶的請求方式,第四種屬于非正常途徑的請求方式,對于這種方式產(chǎn)生的問題我認(rèn)為無法很好的解決,也不需要解決。

總結(jié)

以上是生活随笔為你收集整理的tomcat编码配置gbk_tomcat编码乱码问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。