request.setCharacterEncoding()是设置从request中取得的值或从数据库中取出的值
response.setContentType("text/html;charset=gb2312")是设置页面中为中文编码
前者是设置动态文字(参数,数据库),后者设置页面静态文字
response.setContentType指定 HTTP 响应的编码,同时指定了浏览器显示的编码.
response.setCharacterEncoding设置HTTP 响应的编码,如果之前使用response.setContentType设置了编码格式,则使用 response.setCharacterEncoding指定的编码格式覆盖之前的设置.与response.setContentType相同的 是,调用此方法,必须在getWriter执行之前或者response被提交之前.
response.setContentType
设置发送到客户端的响应的内容类型,可以包括字符编码说明.
也就是说在服务器端坐了这个设置,那么他将在浏览器端起到作用,在你打开浏览器时决定编码方式
如果该方法在response.getWriter()被调用之前调用,那么响应的字符编码将仅从给出的内容类型中设置。该方法如果在response.getWriter()被调用之后或者在被提交之后调用,将不会设置响应的字符编码,在使用http协议的情况中,该方法设置 Content-type实体报头
response.setCharacterEncoding设置响应的编码
如果服务器端使用response.setContentType设置了编码格式,
那么应该使用 response.setCharacterEncoding指定的编码格式,这样就会把之前的设置屏蔽掉
一般建议设置response.setCharacterEncoding
response.setContentType 经常会遇到失效的情况(设置了 但是经常不起作用)