让Servlet和html怎么捣鼓都能输出正确的UTF8格式

我是初学者, 跟着视频做练习, 发现视频里能正确输出的汉字, 到我这里就是怎么都乱码..

发现网上找不到现成的完整解决办法, 遂自己查文档做试验

折腾了一晚上, 在我目前接触的编码范围里, 算是解决了

环境 MyEclipse2014+tomcat8.0,+Java1.7.0_45


-----------------分割线------------------

学习了新的知识, 使用Filter, 在Filter的doFilter()方法中加入

		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		chain.doFilter(request, response);

就可以不用在每个Servlet中都使用以下的代码了, Filter在所有执行前自动更改~

但若网页本身又定义了新的编码方式, 则会覆盖整个Filter的结果, 故要删除网页中的编码方式设置的相关代码

另外, Filter会根据web.xml中的顺序来过滤, 为了防止在别的Filter中就跳转了, 务必把EncodingFilter放在第一个

-----------------分割线完------------------


我做的练习: 写一张表单, 获取表单对应的信息, 并在一个新的网页中输出(此处用是在Servlet中用out.println("html的代码")来形成一个网页的....感觉这个是不是太过时...)

出现的问题: 1.html中的表单页面的中文乱码

2.表单中填写的中文, 在新输出的网页中也是乱码


解决的方法:

首先, 把MyEclipse-Window-preference 中全部和编码有关的东西都改成UTF-8, 网上很多教程, 就不累述了


然后, html网页中head部分里通常写成是

<meta name="content-type" content="text/html; charset=UTF-8">

改成两条, 写在一条里他就识别不了分号后面的东西, 但是也不报错或警告 (我也不知道为什么会这样, 试出来的)

<meta name="content-type" content="text/html">
<meta charset="UTF-8">

问题1解决


最后, 在Servlet的service(doGet或者doPost, 看你用哪个了)方法中写上

request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");

将req和resp的信息都进行编码格式的规范~

尤其是第一条, 视频里没写, 加上后就解决了问题2, 即从表单获得的填入值中的中文在新网页输出时不再乱码

与上一条不一样的是, 在Java里能将text/html和charset=UTF-8写在一句里且有效


纯属记录一下自己的研究心得, 希望对看到的人有帮助 ^_^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值