zoukankan      html  css  js  c++  java
  • 钉钉小程序之参数有中文。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是对的,为什么不调用接口,很不解!!!!!

  • 相关阅读:
    Python正则表达式(3)--字符串匹配开头结尾
    Python正则表达式(2)---字符串匹配多个字符
    Python正则表达式(1) --匹配单个字符
    Navicate Premium 永久破解
    升级pip指令
    爬虫(自学)之User Agent 第三方库my_fake_useragent 和 fake_useragent
    django drf 反序列化上传图片
    git的使用
    python 爬虫 基本库使用urllib之urlopen(一)
    吉他入门第三讲~~~~~和弦
  • 原文地址:https://www.cnblogs.com/wangfencs/p/10913598.html
Copyright © 2011-2022 走看看