在日常工作中,我们常常会碰到在生产上的项目代码是运行可以的,但是下载到自己本地上却会出现编码问题。今天我就遇到了这样一个问题,在前端页面通过window.location.href的方法向后端跳转时需要将中文参数进行编码出来,然后在后台出去数据时,需要对取出来的数据进行解码操作,编码和解码用的是base64,但是在生产时可以解码成功的但在我本地却出现了解码错误的情况。后来经过查找资料发现是因为每个服务器的编码方式是有区别的,所以就会出现解码失败的情况。
解决方法:不采用base64的编码和解码,而是选择url编码和解码
前端代码:
function toGetClinicList(idCard, cardNumber, patientName) {
var url = “…/api/clinic.htm?action=cliniclist&idCard=” + idCard + “&cardNumber=” + cardNumber + “&patientName=” + patientName;
url = encodeURI(url);
window.location.href = encodeURI(url);
}
后端代码:
String patientName = request.getParameter("patientName");
patientName= URLDecoder.decode(patientName, "utf-8");
这样就解码成功了