tomcat编码问题

1.get请求参数(url参数)

客户端编码:get请求是url参数,编码用的是浏览器默认的,也可以指定,用 var encodedValue = encodeURIComponent(value);不过这个编码是utf-8的。

服务端解码:首先tomcat的url参数默认解码方式8.0.30之前是iso8859-1,之后是utf-8。如果要额外指定,需要配置server.xml文件,添加urlencoding=GBK。如果指定了usebodyencodingforurl=true,则会使用表单请求体,context-type的编码。优先级urlencoding更高?

var query = window.location.search;
var form = document.getElementById('loginForm');
var actionUrl = form.action;
var baseUrl = actionUrl.split('?')[0];
var queryParams = actionUrl.split('?')[1];

if (queryParams) {
    var paramsArray = queryParams.split('&');
    var encodedParams = [];

    for (var i = 0; i < paramsArray.length; i++) {
        var param = paramsArray[i];
        var keyValue = param.split('=');
        var key = keyValue[0];
        var value = keyValue[1];
        var encodedValue = encodeURIComponent(value);
        encodedParams.push(key + '=' + encodedValue);
    }

    form.action = baseUrl + '?' + encodedParams.join('&');
}

// 继续表单提交
return true;

post请求:表单数据

1.客户端编码:设置请求头的context-type。

2.服务端解码:默认使用请求头传过来的context-type?还是tomcat默认的?稳定就设置request.setCharacterEncoding,如果一个个转不方便就加个过滤器。

如果还是出现乱码问题,肯定是不知道哪里在获取请求参数的时候先解码了一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值