サーバーとローカルの中国語の文字化けしの問題を解決する
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();
}