- HttpServle输入输出中文乱码问题,解决:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
//设置输入输出的编码格式为"UTF-8"
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
…
out.flush();
out.close();
}
(response与request对象我就不解释了,最好习惯性的对两对象的编码方式都进行设置
)
- 安卓中post方法编码问题
public String post(List<NameValuePair> nameValuePairs, String post_url)
{
String result = "";
try
{
// 生成post对象
httpPost = new HttpPost(post_url);
// 生成HttpEntity对象,以HTTP.UTF_8的编码格式进行发送数据
HttpEntity httpEntity_post = new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8);
// 将Entity与post请求对象相关联
httpPost.setEntity(httpEntity_post);
// 客户端发送Post请求对象,并用HttpResponse接收服务端返回的响应
httpResponse = httpclient.execute(httpPost);
// 判断是够请求成功 200为正常状态
if (httpResponse.getStatusLine().getStatusCode() == 200) {
// 获取返回内容中的的Entity
//以HTTP.UTF_8的编码格式进行解析
result += EntityUtils.toString(httpResponse.getEntity(),"utf-8");
}
else
{
return null;
}
} catch (Exception e)
{
e.printStackTrace();
return null;
}
return result;
}
- 数据库数据插入乱码问题
- 首先确保数据库的编码是"UTF-8"
- 若设置完后仍出现乱码问题,则可以数据库url后面加上编码,例如private final String URL = "jdbc:mysql://localhost:3306/wifidb?useUnicode=true&characterEncoding=UTF-8";
(以上问题常见于自己搭建的客户端与服务端间的通讯)