zoukankan      html  css  js  c++  java
  • URL传递多个参数遇到的bug

    bug所在:

      通过URL传递多个参数的时候,其一是中文出现乱码,其二是空格被“%20”替代;

      原因分析:原理暂时还不清楚,后续再研究下原理,只知道有中文的时候就会出现乱码;%20是url空格的编码;

    提到编码,就得来简单了解下(周末再详细补充下知识)编码的几种格式:

    一:ASCII码,美国标准信息交换码,只有7位.

    二:UTF-8:是一种针对Unicode的可变长度字符编码,用1-6个字节 编码Unicode字符.

    三:ISO-8859-1,是浏览器默认编码,包含了西方欧洲语言不可缺少的附加字符,它是单字节码,向下兼容ASCII.

      解决办法:传递url的时候通过两次decodeURL编码:encodeURL(encodeURL(url))(为什么要经过两次呢,每次编码到底发生了什么事情呢?第一次encodeURL,按照utf-8获取多字节字符将其一一遍历成单字节字符,第二次encodeURL,进行编码)而在另一个页面中(如:2017-07-03 22:52:10)这种格式的时候,由于有空格,所以就出现了这种结果:2017-07-03%2022:52:10,如何搞呢,这么搞:encodeURL(2017-07-03%2022:52:10)就回来了(2017-07-03 22:52:10)。

    查了下资料,这其中涉及到一个知识点:

    编码和解码的三种方式:

    一:encodeURL(url)/decodeURL(url):主要用于整个URL,不会对本身属于URL的特殊字符进行编码,如 : , / , ? , # 等等,

    二:encodeURLComponent()/decodeURLComponent()主要用于URL的某个字段,会对任何非标准字符进行编码,所以平时用的地方比较多

    三:escape()/unescape(),只能编码ASCII码,已经废弃,所以不用考虑它啦;

    记录开发中的每一个bug,进步从对bug的思考总结开始!

      

    焦大叔叔
  • 相关阅读:
    boke
    Http post/get
    记一次网站优化---图片压缩与移动端画面缩放问题
    深入浅出 Vue.js 第九章 解析器---学习笔记
    Linux/Mac中alias的使用
    JavaScript中的函数柯里化与反柯里化
    JavaScript中深拷贝实现
    JavaScript中的节流和防抖
    博客园加入百度统计遇到的坑
    记一次无数据库下动态更新文案的解决历程
  • 原文地址:https://www.cnblogs.com/tiny-jiao/p/7113526.html
Copyright © 2011-2022 走看看