• url编码


    为什么要编码

    1、一般来说,URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。
    当url地址中参数中包含&、+、%等特殊字符时,地址无效。所以直接用encodeurl编码,由于没法对参数中这些编码,可能会出错。就需要对参数使用encodeURIComponent()。
     
    只有字母和数字[0-9a-zA-Z]、一些特殊符号“$-_.+!*'(),”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL
     
    如果URL中有汉字,就必须编码后使用。
    主要是对参数进行编码。
     
    2、使用浏览器直接发起请求(在地址栏输入地址),浏览器会使用默认的编码方式对url进行编码,各浏览有差异。
    使用Javascript先对URL编码,然后再向服务器提交,不给浏览器插手的机会,能保证统一的编码方式输出相同的url。
     

    编码方式

    1、有效的 URI 中不能包含某些字符,URI 编码方法(encodeURI()和 encodeURIComponent())就可以对 URI 进行编码,它们用特殊的 UTF-8 编码替换所有无效的字符,从而让浏览器能够接受和理解。
     
    2、encodeURI()和 encodeURIComponent()方法区别:
    encodeURI()主要用于整个 URI,不会对本身属于 URI 的特殊字符进行编码,例如:
     
    除了常见的符号以外,对其他一些在网址中有特殊含义的符号对“; / ? : @ & = + $ , #”也不进行编码。
    这里面包含了一些浏览器不认同的参数中的特殊字符,所以对参数要用 encodeURIComponent()编码。
     
    encodeURIComponent()主要用于对 URI 中的某一段,会对它发现的任何非标准字符进行编码。特别是在参数中。
     
    不可以用它对整个url编码,浏览器会当成查询字符串。
     
    举例
    var uri = "http://www.wrox.com/illegal value.htm#start";
     
    alert(encodeURI(uri));
    //"http://www.wrox.com/illegal%20value.htm#start"
    encodeURI()编码后的结果是除了空格之外的其他字符都原封不动,只有空格被替换成了%20。
     
     
    alert(encodeURIComponent(uri));
    //"http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start"
    encodeURIComponent()方法则会使用对应的编码替换所有非字母数字字符
    旧方法escape()和 unescape()只能正确地编码 ASCII 字符
    而新的 URI 方法能够编码所有 Unicode 字符
     

    扩展:Unicode、gbk、gb2312、utf-8

    编码:将语言用字节表示
    最初:ANSI 的”Ascii”编码——只编码英文
    这种汉字编码方案叫做 “GB2312“。GB2312 是对 ASCII 的中文扩展。
    后来GB2312不够表示汉字,扩展之后的编码方案被称为 GBK 标准。
     
    最后统一:Unicode
    从unicode开始,无论是半角的英文字母,还是全角的汉字,它们都是统一的”一个字符“!同时,也都是统一的”两个字节“,请注意”字符”和”字节”两个术语的不同,“字节”是一个8位的物理存贮单元,而“字符”则是一个文化相关的符号。在unicode中,一个字符就是两个字节。
     
    utf-8
    为解决unicode如何在网络上传输的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF-8就是每次8个位传输数据,而UTF-16就是每次16个位。UTF-8就是在互联网上使用最广的一种unicode的实现方式,这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。
     
    从unicode到uft-8并不是直接的对应,而是要过一些算法和规则来转换。

  • 相关阅读:
    python进阶(18)@wraps装饰器
    python进阶(17)偏函数partial
    《将博客搬至CSDN》
    ajax.error
    js金额校验,js正则表达式,包含正负,小数点后两位
    input框 限制只能输入金额(-.数字)
    input 属性为 number,maxlength不起作用如何解决?
    Redis设计与实现第二部分:第9章:单机数据库的实现
    Redis设计与实现第一部分:第8章:Redis-对象
    Redis设计与实现第一部分:第7章:Redis-压缩列表
  • 原文地址:https://www.cnblogs.com/yaoyao-sun/p/10387823.html
Copyright © 2020-2023  润新知