前端 encodeURI 为什么要编码两次

  • 1. 编码解码过程
  • 2. 总结
  • 3. 代码示例
  • 4. 参考资料

1. 编码解码过程

2. 总结

两次编码两次解码的过程为:
    UTF-8 编码(成 ASCII 码,全西文字符) -> UTF-8 编码 -> 服务器容器解码(Tomcat 默认编码,Tomcat8 URI 默认编码为 “UTF-8”,而 Tomcat7 URI 默认编码为 “ISO-8859-1”,两者都可正常解全西文字符 ASCII 码) -> UTF-8 解码,编码和解码的过程是对称的,所以不会出现乱码。

  乱码的原因是编码与解码过程不对称,即编码与解码操作使用了不同的编码格式,归根结底还是编码不同呀!

PS:

  1. ASCII 码在计算机中可以表示所有的西文字符
  2. ISO-8859-1(别名ISO-Latin-1)、GB2312、GBK、GB18030、UTF-8 是向下兼容 ASCII 编码的

3. 代码示例

前台JS提交的时候将中文先编码 2 次

encodeURI(encodeURI())

然后在后台对接收到的参数解码,将前台编过 2 次码的参数,再解 2 次码,Tomcat 会自动解码 1 次,如果容器 Tomcat 或其他会自动解码 1 次的容器,则只需要解码 1 次。

public static String decodeAjaxString(String strVal) {try {strVal = URLDecoder.decode(URLDecoder.decode(strVal,"UTF-8"),"UTF-8");} catch (UnsupportedEncodingException ex) {strVal = "";ex.printStackTrace();}return strVal;
}

其他问题:encodeURI() 和 encodeURIComponent() 的区别?

4. 参考资料

  1. https://blog.csdn.net/xpsharp/article/details/84081946
  2. https://www.zhihu.com/question/21861899/answer/20300871

前端 encodeURI 为什么要编码两次相关推荐

  1. xss 全编码两次_URL编码与XSS

    0x00 背景 最近遇到一个双重编码绕过过滤的xss漏洞,成功在大佬的指点下弹出成功之后记录一下学习. 0x01 URL编码 一个URL的形式如下: foo://example.com:8042/ov ...

  2. escape、encodeURI 、encodeURIComponent 编码与解码

    JS escape.encodeURI .encodeURIComponent 编码与解码 本文讨论如何对传递参数用JS编码与解码 1:编码与解码方法的对应关系 escape ------------ ...

  3. 记录一下前端针对下载文件的两种请求方式

    之前做了很多下载文件的接口都没习惯进行记录,现在开始规范自己,让自己养成一个随手保存代码的好习惯.写的不足之处请指出,会改正. 说一下前端下载文件常用的两种方式,get请求和post请求 get请求相 ...

  4. 前端Url 传参编码

    背景 我遇到的问题是这样的 例如: 我的用户中心的项目是这样的URL:https://my.csdn.net/我的一个活动页的项目的URL是:https://my.csdn.net/?id=1166这 ...

  5. 前端encodeURI , decodeURI对字符串编码解码 , 以及把url中的%0A %20解码成换行和空格

    一 , 对字符串进行编码 var str = "岁月不居,时节如流"console.log(str);str = encodeURI(str)console.log("= ...

  6. 【前端来刷LeetCode】两数之和与两数相加

    大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...

  7. xss 全编码两次_XSS进阶

    原标题:XSS进阶 1.XSS常用语句及编码绕过 XSS常用的测试语句有: ●<>alert(1)> ● ● ● 常见的XSS的绕过编码有JS编码.HTML实体编码和URL编码. ( ...

  8. 假前端耍耍哒哒工作两年的感悟

    ** 从今天开始,每天学习一点新东西,学习的东西就通过博客记录下来! ** 1.刚开始学习前端的小白到在一家公司呆了两年时间,时间过得真的是快,从刚开始进公司的时候很好学,每天东西对我来说都是新的,对 ...

  9. 网上书城项目前端界面设计及编码

    文章目录 前言 正文 登录界面 注册界面 前台主界面 搜索书籍界面 购物车界面 前言 上篇文章做了需求分析和设计数据库表(传送门),今天来设计前端界面和编码. 正文 注意,下面的这些页面全部都要引用外 ...

  10. xss 全编码两次_XSS平台简单使用

    XSS常用语句及编码绕过 XSS常用的测试语句有: 常见的XSS的绕过编码有JS编码.HTML实体编码和URL编码 JS编码 JS提供了四种字符编码的策略,如下所示. 三个八进制数字,如果个数不够,在 ...

最新文章

  1. 武汉python培训哪一家好一些-武汉哪个Python培训机构比较好?
  2. mysql etc rc.local_CentOS 7 开机启动自定义配置文件:/etc/rc.local 不执行解决办法 | IT运维网...
  3. java基础的知识点(一)
  4. Airflow 中文文档:常见问题
  5. linux oracle 运维_oracle数据库常用命令整理
  6. 计算机学office有必要吗,计算机二级office要学多久
  7. python相关软件安装流程图解——Windows下安装Redis以及可视化工具——Redis-x64-3.2.100——redis-desktop-manager-0.9.3.817...
  8. Android性能全面分析与优化方案研究—几乎是史上最全最实用的
  9. 韦东山嵌入式学习心得
  10. 入门必看,51单片机学习三步走
  11. Mac提升效率软件集锦
  12. 密码格式 数字+字母
  13. asp.net mvc 网站生成二维码
  14. 【QGIS入门实战精品教程】10.1:QGIS基于DEM数据的地形分析案例教程
  15. 17暑期ACM俱乐部个人训练赛第1场 (石油oj) 7.24号
  16. xcode 可以打开xmind_XMind 推出的轻量化脑图工具,时隔两年迎来大版本更新:Lighten 2...
  17. 内卷老员工之三级缓存和伪共享
  18. pacemaker常用命令
  19. Cesium中文教程-3D模型(3D Models)
  20. Excel中设置内边框和外边框

热门文章

  1. 1.45亿元!甲骨文中标中国邮政储蓄银行数据库项目
  2. 倒计时1周!聚焦金融科技,Gdevops北京站即将启程
  3. 【人民币识别】基于matlab GUI形态学钞票面额识别与统计【含Matlab源码 906期】
  4. 【验证码识别】基于matlab CNN卷积神经网络验证码识别【含Matlab源码 098期】
  5. 计算机应用技术与英语相关性,浅析计算机应用的技术专业的计算机专业英语的教学改进.doc...
  6. 优先体验重播matlab_如何为深度Q网络实施优先体验重播
  7. php 怎么更新浏览器缓存文件在哪里,PHP 设置动态网页在浏览器的缓存
  8. 德国计算机博士怎样,2020年德国IT博士offer什么时候发
  9. 伍楼阁使用的WordPress代码高亮插件使用说明
  10. NGUI的输入框制作(attach- input filed script的使用)