• 钉钉小程序之参数有中文。encodeUri以及encodeURIComponent详解


    1、encodeUri和encodeURIComponent的用法以及区别
     
    encodeUri是对整个uri进行编码,encodeURIComponent 是对.com后面的一段进行编码。
    encodeUri不会对本身属于uri的特殊字符进行编码(: / # ?),encodeURIComponent是对所有非标准字符进行编码
     
    看如下例子:
    var uri = "http://www.wrox.com/illegal value.htm#start";
    //"http://www.wrox.com/illegal%20value.htm#start"
    alert(encodeURI(uri));
    //"http%3A%2F%2Fwww.wrox.com%2Fillegal%20value.htm%23start" alert(encodeURIComponent(uri))

    使用encodeUri编码后的结果是除了空格之外的其他字符都原封不动,只有空格被替换成了20%,而encodeURIComponent则会使用对应的编码替换所有非字母数字字符。

    所以对整个URI使用encodeUri,而对附加在URI后面的字符串使用encodeURIComponent。

    在日常,我们使用encodeURIComponent较多。

    2、钉钉小程序关于encodeURIComponent的坑

      如果小程序的接口参数里有中文,如果不进行编码,会报错“有不合法的字符”,需要进行编码,关键是不会调用接口!!!!

      如果是关于url不合法的,钉钉小程序不会调用接口。

      一开始我觉得,参数有中文,使用encodeURIComponent足以,毕竟它只对uri后面的非法字符串编码。

      当我使用完encodeURIComponent后,依旧没有调接口,同时不报“有不合法的字符”这个错,这说明字符编码起了作用,没有不合法的字符。

      但是报了一个error:19的错误,没有指明错误原因,很无脑。

      很明显,不是不合法的字符的错,这时候就会去检查参数什么的,绕了一大圈后,我试了下encodeUri,然后就成功了。

    针对这一点,真的要吐槽下钉钉,error:19是个什么鬼,而且还不调用接口,即使参数错了或者格式不对,看日志也能得出结论,这是个什么鬼。况且uri是对的,为什么不调用接口,很不解!!!!!

  • 相关阅读:
    重写(Overriding)与重载(Overloading)的区别
    A Guide to setup SQL Server Reporting Services (SSRS) with Dynamics AX
    date2Str Function in Dynamics AX 2009
    浅谈程序员加薪问题(转)
    消息队列设计精要
    Redis集群模式原理探究
    SpringBoot内置tomcat原理分析
    Mybatis整体设计探究
    MapStruct 使用详解
    Zookeeper快速领导者选举原理
  • 原文地址:https://www.cnblogs.com/wangfencs/p/10913598.html
Copyright © 2020-2023  润新知