• 【转】URL编码(encodeURIComponent和decodeURIComponent)


    转自http://blog.jhonse.com/archives/2032.jhonse

    最近在用CI框架的时候,发现一个问题,URL的GET方式链接时,如果用中文字符的话,就会出现问题,提示:链接字符不通过,于是在网上找了很多方法,修改CI框架的config.php文件,以及URL.php文件,都有所修改,最后还是没有解决这个问题。

    一开始使用的时候,都是在谷歌浏览器上调试的,什么问题都没有,中文字符都可以通过,当时还真的有点佩服谷歌了。然而在IE、360浏览器上已测试,马上就出现以上的问题了。想了一个多小时,解决方法就是在提交数据的时候,通过JS把中文编码,然后在ci框架里接收到这编码数据,进行解码就可以了。

    编码函数:

    encodeURIComponent()

    encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。

    语法

    encodeURIComponent(URIstring)
    参数描述
    URIstring 必需。一个字符串,含有 URI 组件或其他要编码的文本。

    返回值

    URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。

    说明

    该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: – _ . ! ~ * ' ( ) 。

    其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

    提示和注释

    提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。

    实例

    在本例中,我们将使用 encodeURIComponent() 对 URI 进行编码:

    <script type="text/javascript">
    
    document.write(encodeURIComponent("http://www.w3school.com.cn"))
    document.write("<br />")
    document.write(encodeURIComponent("http://www.w3school.com.cn/p 1/"))
    document.write("<br />")
    document.write(encodeURIComponent(",/?:@&=+$#"))
    
    </script>

    输出:

    http%3A%2F%2Fwww.w3school.com.cn
    http%3A%2F%2Fwww.w3school.com.cn%2Fp%201%2F
    %2C%2F%3F%3A%40%26%3D%2B%24%23

    解码函数:

    decodeURIComponent()

    定义和用法

    decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。

    语法

    decodeURIComponent(URIstring)
    参数描述
    URIstring 必需。一个字符串,含有编码 URI 组件或其他要解码的文本。

    返回值

    URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换。

    实例

    在本例中,我们将使用 decodeURIComponent() 对编码后的 URI 进行解码:

    <script type="text/javascript">
    
    var test1="http://www.w3school.com.cn/My first/"
    
    document.write(encodeURIComponent(test1)+ "<br />")
    document.write(decodeURIComponent(test1))
    
    </script>

    输出:

    http%3A%2F%2Fwww.w3school.com.cn%2FMy%20first%2F
    http://www.w3school.com.cn/My first/

    转载请注明:Jhonse技术博客 - 关注技术资讯以及技术文章的IT博客 »

  • 相关阅读:
    【Flutter 实战】1.20版本更新及新增组件
    【Flutter 实战】各种各样形状的组件
    【Flutter 实战】全局点击空白处隐藏键盘
    Flutter —布局系统概述
    【Flutter 实战】17篇动画系列文章带你走进自定义动画
    lvs负载简介,原理,常见使用案例及Keepalived高可用
    02 . MongoDB复制集,分片集,备份与恢复
    Go之Casbin简介,安装,模型,存储,函数
    govendor包管理及Go项目热加载
    教你三招快速文件批量重命名方法
  • 原文地址:https://www.cnblogs.com/telwanggs/p/4540097.html
Copyright © 2020-2023  润新知