Servlet不能设置编码,设置编码无效!?

来源:互联网 发布:ai cc mac破解版下载 编辑:程序博客网 时间:2024/06/16 10:25
 我设置了这些东西但是
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=UTF-8");
代码完无效
response.setCharacterEncoding("utf-8");    response.setContentType(harEntry.response.content.mimeType);    response.setStatus(harEntry.response.status);    for (HarHeader header : harEntry.response.headers) {        response.addHeader(header.name, header.value);    }    PrintWriter ss = response.getWriter();    ss.write(remoteContent);    ss.close();} else {    remoteContentBin = EntityUtils.toByteArray(remoteEntity);    response.getOutputStream().write(remoteContentBin);}if (response.getContentType() == null || "".equals(response.getContentType())) {    response.setCharacterEncoding("UTF-8");    response.setContentType("application/json;charset=UTF-8");    response.addHeader("Content-Type", "application/json;charset=UTF-8");
原因是Response只要有访问就打开了流,只要打开了流,就不能设置编码了
如  response.getXXXX,response.setXXXXX 都会打开流!!
解决:在所有访问前提前设置编码:
public void doMock(HttpServletRequest request, HttpServletResponse response, String servername) {    try {        request.setCharacterEncoding("utf-8");        response.setCharacterEncoding("utf-8");
.....

0 0