问题背景:
之前遇到过base64后报错了,然后通过encodeURIComponent先编码,然后再base64就解决了,具体可以再看看之前的文章:前端base64遇到的坑:window.btoa中文报错的修复方案
可是,后面又遇到一个问题。
就是发现前端解码后端数据的时候,出现了很多+号。按道理这个字符串中是不存在+号的。
传输流程是这样的:
1、前端传输数据的时候:
先URL编码,然后再base64编码,再传给后端(后端(反过来的)获取到数据的时候,是先base64解码,然后URL解码) 。
2、前端获取数据的时候:
先base64解码,然后再URL解码(后端(反过来的)返回给前端的时候,是先URL编码,然后base64编码)。
问题就是,在前端获取数据的时候,经过解码后发现字符串中,多了不应该出现的+号。
先上结论:最后调试发现,居然是空格问题。
想一探究竟的,可以继续往下看。
来个Demo。
详情:URL编码中空格处理差异:Java的+号与前端的%20