GBK环境下Ajax提交参数的问题

众所周知,Ajax默认是使用UTF-8编码来传递参数的。
如前端界面、配置文件、数据库等一概都用UTF-8编码,那毫无疑问是不存在编码问题的。
可是目前项目已经使用了GBK编码,如何在GBK环境下解决UTF-8编码问题呢?
以Ext的Ajax方法为例:
下面这个方法目的是删除Grid的一行或多行数据,这里构造了一个idParams,用于保存要删除的id列表。
var rec = Ext.MessageBox.show({
title : '询问',
animEl : 'btnDeleteRows',
msg : '确认删除以上' + selectedRows.length + '条记录吗?',
buttons : Ext.MessageBox.YESNO,
icon : Ext.MessageBox.QUESTION,
fn : function(btn) {
var idParams = [];
if (btn == 'yes') {
for (var i = 0; i < selectedRows.length; i++) {
var record = grid.getStore().getById(selectedRows[i].id);
idParams.push(record.get('ID'));
}
Ext.Ajax.request({
scope : this,
url : urlDelete,
params : {
'idParams' : idParams
},
success : function(response) {
var result = Ext
.decode(response.responseText);
if (result.success) {
for (var i = 0; i < selectedRows.length; i++) {
ds.remove(selectedRows[i]);
}
} else
Ext.MessageBox.alert('错误', result.error);
}
});

}
}
});


提交到后台,得到的数据不是所期望的诸如“10245,10445,10767,11345”等格式的数据,而是“10245%2C10445%2C10767%2C11345”,也就是说被被转换成UTF-8编码了。如果是中文参数,那就必须得解码了。
使用原始的new String(str.getBytes("UTF-8"),"GBK")已经不好用了,不过在java.net.URLDecoder里面提供了一个方法:
String idParams = URLDecoder.decode(request.getParameter("idParams"),"utf-8");

这样就OK了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值