釘釘小程序之參數有中文。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是對的,為什么不調用接口,很不解!!!!!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM