我并没有真正理解这个问题,但这让我在使用 UTF-8 而不是 ISO-8859-1 时避免了 Mojibake:
public class EncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
if (req.getCharacterEncoding() == null) {
req.setCharacterEncoding("UTF-8");
}
chain.doFilter(req, resp);
}
@Override
public void destroy() {
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
}
奇怪的是,没有这个过滤器,我得到了 Mojibakes,尽管我没有指定任何类型的编码。我还注意到 init() 方法中的 (filterConfig.getInitParameter("encoding")) 总是返回 null。