1. 程式人生 > >解決客戶端瀏覽器和伺服器互動的編碼問題詳解

解決客戶端瀏覽器和伺服器互動的編碼問題詳解

一:針對於練習仿mvc的jsp+servlet+jsp的模式程式設計的一些編碼問題?

1:瀏覽器使用編碼UTF-8+post請求伺服器時,在伺服器的servlet被訪問類中,需要伺服器內建物件request配置request.setCharacterEncoding("UTF-8"),如果是其他的編碼格式如gbk+post那麼在伺服器中就配置request.setCharacterEncoding("GBK"),意思是告訴伺服器使用gbk編碼進行解碼

2:瀏覽器使用編碼UTF-8+get請求伺服器時,如果像設定post請求,也會是亂碼,因為伺服器預設使用,"ISO-8859-1"編碼,那麼我們是這樣解決的,拿到原始資料的二進位制資料,在進行

UTF-8重新編碼,如具體操作,String name = request.getParameter("name"); byte[] b = name.getBytes("ISO-8859-1");String name = new String(b,"UTF-8");這樣就可以得到瀏覽器資料需要的utf-8格式資料,如果是gbk+get 也是一樣的方式進行操作.

3:伺服器響應瀏覽器,資料不亂碼,伺服器的response物件需進行2個動作,先告訴伺服器使用UTF-8進行編碼response.setCharacterEncoding("UTF-8"),然後在告訴瀏覽器需要用UTF-8來解析,response.setHeader("content-type","text/html,charset=UTF-8");這樣就伺服器和瀏覽器都使用UTF-8編碼

4:伺服器響應客戶端的2個動作簡化設定,response.setContentType("text/html,charset=UTF-8");

5:一般的程式設計中我會進行2個設定:request.setCharacterEncoding("UTF-8"),,response.setContentType("text/html,charset=UTF-8").只是針對post

二:針對於web層mvc框架的開發解決編碼的問題,這裡說的是全域性的配置

1:如果是get請求產生中文的亂碼那麼我們可以在伺服器的servers中server.xml配置編碼具體的配置如下

首先找到我們的檔案位置servers/springmvc at localhost-config/server.xml

配置前:<Connector  connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>中新增URIEncoding="UTF-8",那麼就可以解決get請求編碼

配置後: <Connector URIEncoding="UTF-8"  connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

2:如果是post的編碼,需要在web.xml中配置全域性編碼過濾器,過濾所有的post請求的編碼問題具體配置如下

<filter>

<filter-name>characterEncoding</filter-name>

<filter-class>ore.springframewor.web.filter.characterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8<param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>characterEncoding</filter-name>

<url-pattern>/*<url-pattern>

<filter-mapping>

3:一般在開發中我會將以上個2步驟先完成.