URl 传参时+号变成空格

前端用base64加密后的数据,传递到后台时发现一个问题:前端

好比 韩飞 这个名字,base64加密后的字符串为java

6Z+p6aOe

可是后端接受到参数为:后端

6Z p6aOe

+号变成了空格,致使后台解密的时候出现异常。
解决办法以下:
一、修改客户端,将客户端带“+”的参数中的“+”所有替换为‍“2B%”,这样参数传到服务器端时就能获得“+”了。
二、修改服务器端,将空格替换为“+”,这种方式只适用于参数中有‍“+”没有空格的状况。服务器

本人前端对参数使用base64加密,后端对该参数使用base64解密,使用了第二种方法,替换空格为+号以后再解密。编码

后端解码时遇到一个问题,不能正确解码:加密

import sun.misc.BASE64Decoder;
  1. merchantRelPerson = merchantRelPerson.replace( " ", "+");
  2. BASE64Decoder decoder = new BASE64Decoder();
  3. byte[] b = null;
  4. b = decoder.decodeBuffer(merchantRelPerson);
  5. merchantRelPerson = new String(b, "utf-8");

最后发现,是new String时没有指定编码方式。指定以后就没问题了。spa

项目用的是utf-8编码,可是直接code

merchantRelPerson = new String(b);

仍是乱码,指定utf-8以后就行了。

utf-8

相关文章
相关标签/搜索