向页面响应的方法:
-
getOutputStream();
-
getWriter();
-
这两个方法是互斥的.
- 做出响应的时候只能使用其中的一种流响应.
-
输出中文乱码的处理:
-
字节流:
- 设置浏览器默认打开的编码:
- resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
- 设置中文字节取出的时候编码.
- “中文”.getBytes(“UTF-8”);
- 设置浏览器默认打开的编码:
-
字符流:
- 设置浏览器打开的时候的编码
- resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
- 设置response的缓冲区的编码
- response.setCharacterEncoding(“UTF-8”);
***** 简化的写法:response.setContentType(“text/html;charset=UTF-8”);
- 设置浏览器打开的时候的编码
-
下面是字符流设置的代码:
package encode;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 解决字符流输出中文乱码问题
* 由于response使用的字符流有缓冲区,而缓冲区默认的编码是ISO-8859-1,编码根本不支持中文
*
* 解决方法:
* *设置response的字符流的缓冲区的编码
* *设置浏览器默认打开的时候采用的字符集编码
*/
public class encodeDemo extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置浏览器默认打开的时候采用的字符集编码
//response.setHeader("Content-Type", "text/html;charset=UTF-8");
//设置response的字符流的缓冲区的编码
//response.setCharacterEncoding("UTF-8");
//下面这一句话相当于上面的两句
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print("哈哈哈哈");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}