JSP出现中文乱码

如果是乱码就说明是编码错误,如果都是?可以考虑是不是解码出问题了。

1.普通中文乱码

JSP文件把Page的

contentType="text/html; charset=UTF-8", 
pageEncoding="UTF-8"

中的charset 和 pageEncoding 的编码一致, 通常建议取值为UTF-8
还需保证浏览器的显示的字符编码也和请求的 JSP 页面的编码一致.一般就可以了。

2.涉及到参数传递

获取中文参数值: 默认参数在传输过程中使用的编码为 ISO-8859-1

①. 对于 POST 请求:

只要在获取请求信息之前(在调用 request.getParameter 或者是 request.getReader 等), 
调用 request.setCharacterEncoding("UTF-8") 即可.(不放心可以再加一个resp.setContentType("text/html;charset=UTF-8");)

记得要写在PrintWriter out = response.getWriter();前面

②. 对于 GET 请求:

前面的方式对于 GET 无效. 可以通过修改 Tomcat 的 server.xml 文件的方式. 

参照 http://localhost:8989/docs/config/index.html 文档的 useBodyEncodingForURI 属性. 
为 Connector 节点添加 useBodyEncodingForURI="true" 属性即可. 

<Connector connectionTimeout="20000" port="8989" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>

还有一种不推荐的做法,就是先对传输的参数转换,把他变成UTF-8编码,比如我们把传入的username参数变成UTF-8格式:

String val = request.getParameter("username");

String username = new String(Val.getBytes("iso-8859-1"),"UTF-8");

如果还需要输出到客户端,那么把解码的"iso-8859-1"改成"UTF-8"即可。

3.在使用转发重定向中全部显示"?????"

找找在此文件中是否有一行PrintWriter out=response.getWriter(); 有了注释掉就行了。

(猜测可能是覆盖重写那的问题,试了几种改的方法并没有用,考虑到转发后原网页显示什么也没什么用了,遂都注释掉了)
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值