最近前段在导出数据时会遇到“illegal character”的异常错误,结果发现是在请求地址中请求参数包含了空白字符(其编码为%C2%A0)或者是空格字符(其编码为%20),之前对空格字符情况是做了规避处理,而这次又出现了空白字符,要是后续还有其它特殊字符呢?那如何是好?难道每次遇到这些特使字符就在后端做特殊处理?这样显然不合适。既然后端对请求地址(包含请求参数)进行了非法校验(通过URBuilder类进行处理),那么目前只好将请求参数(我遇到的问题是下载的文件名称含有空格或空白字符)放置在请求体中了,这样就可以规避URBuilder的检查处理,在后端中从请求体中获取我想要的文件名称。

  虽然,将文件名称从请求参数移动到请求体中,可以规避URBuilder对请求参数中含有非法字符的检验,但是前端所下载下来的文件名称还是不能正常显示空格或空白字符,都是这些特殊字符的编码形式。后端Java代码是使用了URLEncoder.encode()进行了UTF-8编码,由于后端的数据流还经过了BFF层,由于在BFF层又对编码过的字符再次进行了编码,导致在前段用JavaScript的decodeURIComponet()方法进行一次解码后仍旧显示的编码字符,因此需要进行多次解码才行,我这里是调用了三次decodeURIComponet()方法解码才能够正常显示文件名称了。

  说明一下:在Java中用URLEncoder.encode()和URIDecoder.decode(),那么在JavaScript中需要采用decodeURIComponet()和encodeURIComponet()进行配对。

20191105 闪

JS编解码与Java编解码的对应关系的更多相关文章

  1. java编解码技术,netty nio

    对于java提供的对象输入输出流ObjectInputStream与ObjectOutputStream,可以直接把java对象作为可存储 的字节数组写入文件,也可以传输到网络上去.对与java开放人 ...

  2. Js编码和Java后台解码

    1.java.将resultMsg 转为utf-8 (1) resultMsg = URLEncoder.encode(resultMsg, "utf-8"); (2) new S ...

  3. 常用的js、java编码解码方法

    前言 前后端直接传输数据进行交互不就行了吗,为什么还要进行编码解码?正常情况下直接交互没问题,但当有类似以下情况出现时就需要进行编码再进行传输: 1.编码格式难以统一,导致数据交互过程出现中文乱码等问 ...

  4. 【GPU编解码】GPU硬解码---CUVID

    问题描述:项目中,需要对高清监控视频分析处理,经测试,其解码过程所占CPU资源较多,导致整个系统处理效率不高,解码成为系统的瓶颈. 解决思路: 利用GPU解码高清视频,降低解码所占用CPU资源,加速解 ...

  5. js中escape对应的C#解码函数 UrlDecode

    js中escape对应的C#解码函数 System.Web.HttpUtility.UrlDecode(s),使用过程中有以下几点需要注意   js中escape对应的C#解码函数 System.We ...

  6. 【js】Leetcode每日一题-解码异或后数组

    [js]Leetcode每日一题-解码异或后数组 [题目描述] 未知 整数数组 arr 由 n 个非负整数组成. 经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encode ...

  7. [翻译] 比较 Node.js,Python,Java,C# 和 Go 的 AWS Lambda 性能

    [翻译] 比较 Node.js,Python,Java,C# 和 Go 的 AWS Lambda 性能 原文: Comparing AWS Lambda performance of Node.js, ...

  8. 关于Visual Studio调试C/C++,JS,PHP,JAVA,Python等语言的方法

    我在开始接触vs code后,确实对它的高颜值和小巧灵活而着迷,但是有一个非常现实的问题,相对于vs来说,vscode是一个代码编辑器,而不是一个IDE,在代码编译运行上存在着极大的问题,尤其是开始编 ...

  9. C++的静态联编和动态联编

    联编的概念 联编是指一个计算机程序自身彼此关联的过程,在这个联编过程中,需要确定程序中的操作调用(函数调用)与执行该操作(函数)的代码段之间的映射关系. 意思就是这个函数的实现有多种,联编就是把调用和 ...

随机推荐

  1. clr via c# 程序集加载和反射(2)

    查看,clr via c# 程序集加载和反射(1) 8,发现类型的成员: 字段,构造器,方法,属性,事件,嵌套类型都可以作为类型成员.其包含在抽象类MemberInfo中,封装了所有类型都有的一组属性 ...

  2. JavaScript的算数,赋值,比较和逻辑运算符

    类似a=1+1这样的表达式称为运算符,js的运算符分为算数,赋值,比较和逻辑运算符:常见的算数有:+ - * / %(加减乘除,取模),比方说5/4=4*1+1:5%4=1,js算数顺序:从左往右,先 ...

  3. 使用 Apache James 3.3.0(开源免费) 搭建外网电子邮件服务器(基于 Windows + Amazon Corretto 8)

    对于邮件服务器的安装,请先参阅: 使用 Apache James 3.3.0(开源免费) 搭建内网电子邮件服务器(基于 Windows + Amazon Corretto 8) https://www ...

  4. 1、SSH无密码访问

    1.在需要无密码登录远程服务器的机器上(如A→B服务器)生成密码对 A:服务器操作: ssh-keygen -t rsa :输出的内容直接一路回车即可(enter) 执行上面一步,会在~/.ssh目录 ...

  5. Centos7内核版安装nginx环境问题及解决方法

    错误信息:./configure: error: C compiler cc is not found解决方案:yum -y install gcc gcc-c++ autoconf automake ...

  6. Policy-based Approach(基于策略的方法)

    step 1:Neural Network as Actor step 2:goodness of function(训练一些Actor) 是一个序列,包含T个状态s.行为a.奖励s.代表某一次的开始 ...

  7. webpack打包进行丑化压缩遇到(TypeError Cannot read property 'compilation' of undefined)问题

    今天再重新配置老项目node打包环境的时候遇到了一个问题. 在打包的时候报: TypeError: Cannot read property 'compilation' of undefined 错误 ...

  8. iMacros 入门教程-基础函数介绍(1)

    最近在研究 imacros 这工具,感觉非常强大,简单来说就是自动化对于浏览器的操作,程序自动帮你实现,支持 chrome firefox ie,这样基本就覆盖了99%的人群了吧,甚至他自己也有一个 ...

  9. CSS语法、选择器、继承、层叠

    行内样式(内联样式) <h1 style="color:red;font-size:20px;">css行内样式</h1> 内部样式表(嵌入样式) < ...

  10. 监控redis cluster 主从实例是否切换,切换前后对应关系

    需求:编写脚本实现对redis cluster 主从是否发生主从切换进行监控,若发生切换,输出切换前后主从对应关系. 初始化对比文件,仅执行一次,后续不需要在执行,除非该文件不存在. cmd=&quo ...