1. 程式人生 > >解決post和get請求的亂碼問題

解決post和get請求的亂碼問題

亂碼問題

1.解決post中文亂碼問題

新增一個spring提供的過濾器 , 將編碼設定為utf-8
在web.xml中加入以下配置資訊:

<filter>
	<filter-name>encoding</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	<!-- 設定編碼參是UTF8 -->
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>encoding</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

配置好以後就可以解決post請求時出現的亂碼問題

2.解決get請求中文引數亂碼

  1. 第一種解決辦法直接修改編碼方式:
    以tomcat為例子: 修改tomcat配置檔案server.xml (就是修改埠的位置)
    新增前如下:
    <Connector
    		port="8080" 
    		protocol="HTTP/1.1"
    		connectionTimeout="20000"
    		redirectPort="8443" />

新增編碼資訊後如下:

    <Connector
    		URIEncoding="utf-8"
    		port="8080" 
    		protocol="HTTP/1.1"
    		connectionTimeout="20000"
    		redirectPort="8443" />

就是多加了一個編碼的配置:URIEncoding="utf-8"

  1. 第二種,先解碼再編碼
    這種方式對伺服器來說並沒有改變編碼的方式. 比如前臺傳遞過來的是iso-8859(不支援中文)編碼, 這裡我們或取得仍然是iso-8859的編碼. (第一種方式獲取的直接就是utf-8編碼)
    原理過程:
    1). 解碼
    具體做法就是我們先用iso-8859來對引數資訊進行解碼, 解碼其實也就是把iso-8859的編碼還原成之前的原始的二進位制位元組碼
    2).編碼
    通過上步得到的二進位制的位元組碼我們可以將他使用任何一種方式進行重新編碼, 例如我們需要utf-8 的格式, 這時候再講二進位制碼按utf8的編碼格式進行轉換一下即可.
    以get請求引數userName為例:
String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

以上就是將userName以iso解碼,然後再以utf8編碼.