1.在JSP页面中,中文根本无法显示。
这种情形下,常日的缘故原由是:
没有把文件头的字符集设置为中笔墨符集。
办理办法:在文件头上写明如下内容:
或者
utf-8编码也可以用gb2312字符集更换,这两个都是中笔墨符集,但一样平常普遍用utf-8
2.提交过程中显示乱码
提交过程中显示乱码指的是中笔墨符经由了tomcat做事器之后,在IDE的掌握台中、提交到的页面中等处产生的中文乱码
我们一样平常可以通过url传这个中文参数,看url中的中文参数是否乱码判断是在客户端即浏览器中产生的乱码还是在做事器中产生的乱码
在提交中文数据给做事器,涌现中文乱码的缘故原由是:
中笔墨符在被提交给做事器时,由于做事器会将其默认为ISO-8859-1 编码,而在网页上用的是utf-8或者gb2312编码,不能兼容。
有以下3个办理办法:
(1)直接将中笔墨符串转成utf-8格式
这种方法是直接将这个中笔墨符串转换成了支持中文的编码,但是这种方法必须对每一个字符串都进行转码,很直接但很麻烦
(2)直接修正request的编码办法
可以将request的编码修正为支持中文的编码办法,这样全体页面中的要求,都可以自动转为中文,
但是一定要把稳的是:该方法必须在取出值之前就设置request的编码,并且表单form的提交办法该当是post,并且这种方法必须对每个页面都进行request的设置,也很麻烦
(3)利用过滤器
在大型项目中,如果每一个文件都去设置编码的话,十分繁琐,故在工程中一样平常利用过滤器办理Tomcat中文乱码问题。
利用过滤器,可以对全体Web运用进行统一的编码过滤,比较方便。
把稳:利用过滤器也哀求表单提交办法是post,默认不设置的话表单提交办法是get
编写过滤器方法:
首先,建立EncodingFilter的java类,代码如下
package Filter;
import javax.servlet.;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(filterName = \"大众EncodingFilter\"大众)
public class EncodingFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
req.setCharacterEncoding(\公众utf-8\公众);
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
}
}
然后,配置web.xml
要把稳的是web.xml标签是有一定顺序的,顺序不当会有The content of element type \"大众web-app\"大众 must match \公众报错,
例如,filter等的标签应放在servlet的前面
重新提交并重启,中文乱码问题已成功办理 (也须要表单是post方法才行)
---------------------