前端用base64加密后的数据,传递到后台时发现一个问题:前端
好比 韩飞 这个名字,base64加密后的字符串为java
6Z+p6aOe
可是后端接受到参数为:后端
6Z p6aOe
+号变成了空格,致使后台解密的时候出现异常。
解决办法以下:
一、修改客户端,将客户端带“+”的参数中的“+”所有替换为“2B%”,这样参数传到服务器端时就能获得“+”了。
二、修改服务器端,将空格替换为“+”,这种方式只适用于参数中有“+”没有空格的状况。服务器
本人前端对参数使用base64加密,后端对该参数使用base64解密,使用了第二种方法,替换空格为+号以后再解密。编码
后端解码时遇到一个问题,不能正确解码:加密
import sun.misc.BASE64Decoder;
最后发现,是new String时没有指定编码方式。指定以后就没问题了。spa
项目用的是utf-8编码,可是直接code
merchantRelPerson = new String(b);
仍是乱码,指定utf-8以后就行了。
utf-8