解决JSP数据输入中文乱码问题

网上有不少文章总结JSP处理中文的问题,页面的问题现在基本上已经不成为问题了,解决的办法很简单,在页头加上 :

<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GB2312"%>

一般就能解决问题了,另外meta type最好一致:

<meta http-equiv="Content-Type" content="text/html; charset=GB2312">

 

而此法并不能解决用户输入的数据是中文的问题,用户在表单中填入的数据,如果是中文(或任何非ISO字符集),程序处理时(比如放入数据库),就会出现问题。

解决办法是,在下一页(就是处理post/get请求的页/servlet)中代码的开头,加入request.setCharacterEncoding("gb2312");即可。网上也有别的办法,就是在接收每个字段时,都用String的构造器转一下码,那样其实也是可以的,本人试验过,但是当页面要传递的参数很多时,这种办法就过于猥琐了,不如request.setCharacterEncoding("gb2312");这一句爽利。

另外,介绍一个判断乱码出现在哪一步的办法:

1. 首先,在页面HTML中编码入一些中文,在server上跑起来后看一看,能否正常显示,如不能,检查meta type;
2. 编码<%="中文">进入页面,看能否正常显示,如不能,检查jsp的pageEncoding;
3. 如果是在表单中输入中文的问题,在处理页上获取参数之后直接在页面上<%=paramName>输出看一下,如果是乱码就检查request.setCharacterEncoding有没有写好;
4. 如果是数据输入数据库的问题,在排除了request.setCharacterEncoding问题后,试着直接用数据库管理软件插入中文字段到数据库再直接作个查询,能正确查询出中文的话,就代表问题不在数据库,检查JSP代码;否则就要察看下数据库的默认字符集;
5. 如果在第4步确认排除了数据库的问题,就将中文字符从JSP插入数据表,再手动在数据库管理软件里做个查询,看能否正常显示,如不能就是输入的数据字符集不对;如能正常显示,则可以肯定是JSP输出处理的问题,将此字段在JSP中作查询并输出到页面中,改字符集,直到改对为止。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值