Eclipse实现基于JSP的电子会议厅功能(四)

本文针对基于JSP的电子会议厅项目中出现的中文乱码问题,详细介绍了乱码产生的原因,即Tomcat默认使用ISO-8859-1编码格式处理POST请求,不支持中文。通过使用getBytes函数转换编码格式,成功解决了表单提交时的中文乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  截止到上篇文章《Eclipse实现基于JSP的电子会议厅功能(三)》,电子会议厅的功能基本都实现了,但是在上篇文章的截图中,有些页面的内容显示的是乱码,如下图所示。本文基于参考文章,对电子会议厅的功能进行调整,使提交和显示的页面不再出现中文乱码。
在这里插入图片描述
  参考文章1中对jsp页面的几种乱码情况进行了说明,电子会议厅页面中显示乱码属于其中的表单提交时出现中文乱码的情况(通过调试,在Servlet端获取的内容就是乱码),文章中给出的解决方案是实用getBytes函数进行转换。
  虽然电子会议厅程序中每个页面的charset和pageEncoding都设置为GB18030,但是charset设置的是服务器发往客户端展现时的编码,而pageEncoding设置的是jsp页面本身的编码。Tomcat中,对于以post方式提交的表单编码格式默认为ISO-8859-1的编码格式,这种编码格式不支持编码中文,因此会出现中文乱码[1]。
  之前参照《Java Web设计实用教程》写电子会议厅功能时就没太在意其中的Servlet代码,只要是从客户端表单提交的内容,形式都是类似下面的形式。当时为了简单,基本上就把所有new String(xxx.getBytes(“ISO-8859-1”))的代码忽略没管,直接使用从request中获取的参数赋值。

...
String title = request.getParameter("title");
affair.setTitle(new String(title.getBytes("ISO-8859-1")));
...

  修改班级事务发布中的AffairsAdd进行验证,代码及页面截图如下所示:

...
String title=request.getParameter("title");
String content=request.getParameter("content");
int sortId=Integer.parseInt(request.getParameter("sort"));
affair.setTitle(new String(title.getBytes("ISO-8859-1")));
affair.setContent(new String(content.getBytes("ISO-8859-1")));
...

在这里插入图片描述
在这里插入图片描述
  上述方式可以解决表单提交时的中文乱码问题,因此对电子会议厅功能中的其它表单也进行类似的修正,修正后的代码地址为:https://github.com/guochao2299/electronicchamber/tree/20200905。网上还有其它解决方式,比如使用过滤器等,这里就没有再试了。
  后续还会在电子会议厅功能中增加日志功能。

参考文章:
[1]jsp中文乱码六种情况—解决方案,https://blog.youkuaiyun.com/ggrjake25/article/details/96726511
[2]Java Web设计实用教程
[3]jsp中文乱码现象解决办法,https://blog.youkuaiyun.com/qq_40587575/article/details/79818477

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值