字符集问题(过滤器, content="text/html; charset=utf-8" pageEncoding="ISO-8859-1")

小弟初学java, 不太明白这几个地方设置字符集分别有什么用途? 可以相互替换的吗?

  1. 用过滤器设置字符集, 比如通过org.springframework.web.filter.CharacterEncodingFilter

  2. 在jsp页面里面写: <%@ page language="java" import="java.util.*" contentType="text/html; CHARSET=utf-8" pageEncoding="UTF-8"%>

  3. 在jsp页面里面写:

我现在初步感觉3是html的写法.

2是给java的一个指令, 服务器最后生成html发送相应的时候会翻译成3? (但我测试了一下, 在浏览器里看源码, 貌似又不是的)

1是为了方便, 不用每个jsp里都写那些东西?

不知道我的认识对不对.

Spring里的字符过滤器CharacterEncodingFilter是针对请求的,forceEncoding=true是意思是指无论客户端请求是否包含了编码,都用过滤器里的编码来解析请求。

1,是针对浏览器发过来的请求数据进行的编码转换。
2、是服务器发给浏览器的响应时,告诉浏览器响应内容的编码。
3、是浏览器中对http响应头的模拟,即在本地打开页面时,浏览器要用什么编码显示内容。
在浏览器与服务器交互过程中,2的优先级要大于3。