requestとresponse中国語の文字化けし問題のバックグラウンド処理方法

5690 ワード

request受信パラメータの中国語文字化けしの処理:


GET:


方法1:Stringの構造方法を使用する:
new String(request.getParameter(" name").getBytes("ISO-8859-1"), "UTF-8");

方法2:tomcat 7のデフォルトの符号化方式を修正し、server.xmlのポート番号の追加構成:
<Connector connectionTimeout="50000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

POST:


方法1:requestのバッファの符号化を設定する:
request.setCharacterEncoding("UTF-8");

方法2:springの符号化フィルタを用いて、web.xmlに追加:
<filter>
    <filter-name>CharacterEncodingfilter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
    <init-param>
        <param-name>encodingparam-name>
        <param-value>UTF-8param-value>
    init-param>
    <init-param>
        <param-name>forceEncodingparam-name>
        <param-value>trueparam-value>
    init-param>
filter>
<filter-mapping>
    <filter-name>CharacterEncodingfilter-name>
    <url-pattern>/*url-pattern>
filter-mapping>

response出力中国語の文字化けし問題:


文字ストリームの中国語出力:


方法1:
//  . 
response.setHeader("Content-Type","text/html;charset=UTF-8");
//  response .
response.setCharacterEncoding("UTF-8");

方法2:使用を推奨する:
response.setContentType("text/html;charset=UTF-8");

バイトストリーム出力中国語:(実際には使用されません)

//
ServletOutputStream outputStream = response.getOutputStream();
//  
response.setHeader("Content-Type", "text/html;charset=UTF-8");
//  
outputStream.write(" ".getBytes("UTF-8"));

 
ちなみにtomcat 8のデフォルト文字セットはutf-8です