Java Web项目中,如果使用的是Tomcat服务器的话,在数据交互时,经常会出现深恶痛绝 中文乱码的问题,原因主要可以分为以下两个方面:
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方法才行)
---------------------
推荐阅读:浙江衢州网
-
Cindy都瘦出了马甲线,你还要继续放纵吗?
各位,国庆都玩好睡好吃好了没?上班第一天,坛子先来给大家打一针鸡血。认得出来这是谁吗?不看脸,是不是都不敢相信这是3unshine组合的Cindy女士。来康康这...
2019-10-09 -
苹果越来越好色了,库克路子真野
AirPods(包括初代和第二代)的做工算不上好,价格也不够实惠,但由于独领风骚的设计和良好的连接性,使得它顺理成章地成为了最受欢迎的iPhone配件,同时也是...
2019-10-09 -
18岁女儿还和父亲同床,跨越界限的亲情,对孩
无论是友情还是亲情,都需要界限,一旦超越了界限,那么便会带来一些让人烦扰的隐患,特别是父女间,更要有界限。这种距离并不是说让父女间像陌生人一般相处,而是关系可以...
2019-10-09 -
美国辣妈为孩子拼尽脑洞 全手工万圣节服装也太
2019年10月7日报道(摄于10月2日),别闹了,这些服装赢了万圣节! 来自美国俄亥俄州的辣妈 Stephanie Pokorny 为她的孩子们创作了令人瞠目...
2019-10-09 -
iPhone 11又翻车!屏幕并不防刮擦;小
各位早上好,小米卖断货的巨能写终于现货了,你买吗?1,荣耀年末旗舰曝光:6000万四摄+40W快充+5G网络9月初,荣耀正式公布了Vera30新品,该机将打造麒...
2019-10-09 -
匡威这次赔大了!信心满满打造的中国风新品,却
不知道从什么时候开始,脚下的converse就不再仅仅是一双鞋子那么简单了!早就已经成为潮流的象征,是街头的时尚,潮流的符号在如今跟风AJ球鞋的时代,人们对于这...
2019-10-09 -
国庆加班就辞职,这届职场新人怎么了?
国庆长假刚结束,有人累觉不爱地回归工作岗位,翻开日历,发现一个激动人心的“好消息”,全国人民已经一起过完了2019所有法定节假日。不过,对于浙江义乌的某姑娘来说...
2019-10-09 -
2019年动漫展在纽约举行 超级英雄成最大亮
当地时间2019年10月7日,美国纽约,2019年动漫展在纽约雅各布·k·贾维茨会议中心举行,参加动漫展的人穿着戏服摆pose,现场十分热闹。当地时间2019年...
2019-10-09