终极完美解决java web与tomcat服务器中文乱码问题(收藏备用)!

2021年03月04日 04:08:25   [来源:互联网]   [阅读:-]
字体:【

Java Web项目中,如果使用的是Tomcat服务器的话,在数据交互时,经常会出现深恶痛绝 中文乱码的问题,原因主要可以分为以下两个方面:

1.在JSP页面中,中文根本无法显示。

这种情况下,通常的原因是:

没有把文件头的字符集设置为中文字符集。

解决办法:在文件头上写明如下内容:

终极完美解决java web与tomcat服务器中文乱码问题(收藏备用)

或者

终极完美解决java web与tomcat服务器中文乱码问题(收藏备用)

utf-8编码也可以用gb2312字符集替换,这两个都是中文字符集,但一般普遍用utf-8

2.提交过程中显示乱码

提交过程中显示乱码指的是中文字符经过了tomcat服务器之后,在IDE的控制台中、提交到的页面中等处产生的中文乱码

我们一般可以通过url传这个中文参数,看url中的中文参数是否乱码判断是在客户端即浏览器中产生的乱码还是在服务器中产生的乱码

在提交中文数据给服务器,出现中文乱码的原因是:

中文字符在被提交给服务器时,由于服务器会将其默认为ISO-8859-1 编码,而在网页上用的是utf-8或者gb2312编码,不能兼容。

有以下3个解决办法:

(1)直接将中文字符串转成utf-8格式

终极完美解决java web与tomcat服务器中文乱码问题(收藏备用)

这种方法是直接将这个中文字符串转换成了支持中文的编码,但是这种方法必须对每一个字符串都进行转码,很直接但很麻烦

(2)直接修改request的编码方式

可以将request的编码修改为支持中文的编码方式,这样整个页面中的请求,都可以自动转为中文,

终极完美解决java web与tomcat服务器中文乱码问题(收藏备用)

但是一定要注意的是:该方法必须在取出值之前就设置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

终极完美解决java web与tomcat服务器中文乱码问题(收藏备用)

要注意的是web.xml标签是有一定顺序的,顺序不当会有The content of element type "web-app" must match "报错,

例如,filter等的标签应放在servlet的前面

重新提交并重启,中文乱码问题已成功解决 (也需要表单是post方法才行)

---------------------

推荐阅读:西安汽车展


相关新闻
新闻焦点
对于日系车而言,也许不少车友第一时间想到的丰田汽车。其作为汽车品质的代表,它旗下不少车型均被国人赋予难开坏的美誉,尤其是SUV细分市场中的普拉多[更多]
朗逸外形比起卡罗拉思域,不说好看,但很多人可能会觉得更稳重,方正,适应性也更广。能接受他外观的人群自然也就更多,销量自然而然就变多了。上汽大众朗[更多]
凯美瑞,被誉为日系车三雄,全球累计销量高达2000万台。这一次丰田为它改头换面,推出了2019款凯瑞美,下面我们聊一聊它吧。前脸:前脸整体看给人[更多]
前言:C-IASI中保研碰撞试验预告:一汽奥迪自愿申请测试旗下一汽奥迪A6 L车型。试验车型为2019款 一汽奥迪A6L 40TFSI 豪华动感[更多]
关于我们 | 联系我们 | XML地图 | 网站地图TXT | 版权声明
版权所有:青海汽车网未经授权禁止复制或建立镜像
相关作品的原创性、文中陈述文字以及内容数据庞杂本站无法一一核实,如果您发现本网站上有侵犯您的合法权益的内容,请联系我们,本网站将立即予以删除!
中国互联网违法和不良信息举报中心 网络警察报警岗亭