サーバーとローカルの中国語の文字化けしの問題を解決する

3221 ワード

post方式で要求が発生し、中間転送符号をUTF-8に設定
public class HttpRequest {

    public String sendRequest(String urlStr, Map params){

        String response = "";

        /**
         *   
         */
        try {
            HttpClient httpClient = new HttpClient();
            httpClient.getParams().setContentCharset("UTF-8");
            PostMethod postMethod = new PostMethod(urlStr);

            Iterator iter = params.entrySet().iterator();   //map   
            //    
            while (iter.hasNext()) {
                Map.Entry entry = (Map.Entry) iter.next();
                String key = (String) entry.getKey();
                String value = (String) entry.getValue();
                postMethod.setParameter(key,value);
            }
            httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
            httpClient.executeMethod(postMethod);


            /**
             *        ,      
             */
            InputStream inputStream = postMethod.getResponseBodyAsStream();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"UTF-8");
            BufferedReader reader = new BufferedReader(inputStreamReader);
            String temp = "";
            //          
            while ((temp = reader.readLine())!=null){
                response += temp;
            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return response;
    }

}

従って、サーバ受信時に受信と返却の符号化フォーマットを設定する
@RequestMapping("login")
    public void doLogin(HttpServletRequest request, HttpServletResponse response){
        try {
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }