jsp编码问题总结



<%@ page language="java" pageEncoding="UTF-8"%>

jsp文件的编码格式,当jsp文件被编译成java文件会用此编码格式解析jsp文件。如果没有设置pageEncoding但设置了contentType的charset,会使用此属性设置的编码格式解析jsp文件,如果两者都没设置会采用默认的ISO8859-1编码。

<%@ page contentType="text/html;charset=UTF-8"%>

服务器端输出到客户端内容的编码格式,通过设置request.setCharacterEncoding("UTF-8")的编码和此编码一致可以解决中文乱码问题。

request.setCharacterEncoding("UTF-8")要放在request使用之前,否则会不起作用。此方法对get方式提交的参数不起作用,设置

server.xml中的URIEncoding可以解决乱码问题。

encodeURI()两次编码

第一次编码,参数内容便不带有多字节字符了,成了纯粹的 Ascii 字符串。(这里把编第一次的结果叫成 [STR_ENC1] 好了。[STR_ENC1] 是不带有多字节字符的)
再编一次后,提交,接收时容器自动解一次 (容器自动解的这一次,不管是按 GBK 还是 UTF-8 还是 ISO-8859-1 都好,都能够正确的得到 [STR_ENC1])
然后,再在程序中实现一次 decodeURIComponent (Java中通常使用 java.net.URLDecoder(***, "UTF-8")) 就可以得到想提交的参数的原值。

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

可以手动replace(/&/g, "%26").replace(/\+/g, "%2b")转义



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值