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

  • 相关阅读:
    gulp使用技巧-删除node_modules文件夹,解决目录层次太深删除报错的问题
    PHP学习-链接数据库
    教程笔记《JavaScript深入浅出》
    读书笔记《高性能网站建设指南》之雅虎军规
    CSS3边框图片-像素虚边的问题
    WebStorm设置手机测试服务器-局域网内其他设备访问
    gulp的安装和使用
    H5canvas赛车游戏-基于lufylegend引擎
    WebStorm设置左侧菜单栏背景色和样式
    基于jquery的-获取短信验证码-倒计时
  • 原文地址:https://www.cnblogs.com/wangfencs/p/10913598.html
Copyright © 2020-2023  润新知