問題html
我作了微信分享,各類配置都ok,安卓實現分享,可是ios分享不顯示圖片和簡介 。(以下圖)ios
解決過程正則表達式
通過一天的折騰,覈對各類問題最終發現問題所在。是個人url中帶有漢字使用escape()進行的加密,蘋果分享的時候會自動的對(漢字)解碼decodeURIComponent()形成了url簽名錯誤。微信
http://adminpc.z1mei.com/Admin/TLogin?ref=/htmls/TraceOne/TraceCameraLive.html?name=%E7%AE%80%E4%BB%8B&id=166&word=7B928D5BFFD7FE508CCCAFC73F2B52EB2函數
解決辦法是,在打開要分享的頁面的時候,使用encodeURIComponent()對漢字進行加密,就能夠了。post
補充說明編碼
我在獲取urll參數的時候使用的了getUrlParam()這個js方法。這裏方法網上有一堆,比較老,在獲取參數的同時使用了unescope()對參數進行了解碼。目前來講escape() http://www.w3school.com.cn/ 都不在推薦使用了。具體代替爲encodeURIComponent();加密
getUrlParam()個人升級代碼url
function getUrlParam(name,fnDecode) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //構造一個含有目標參數的正則表達式對象 var r = window.location.search.substr(1).match(reg); //匹配目標參數 if (r != null) { if (typeof fnDecode === "function") { return fnDecode(r[2]); } return unescape(r[2]); } return null; //返回參數值 }
escape()不能直接用於URL編碼,它的真正做用是返回一個字符的Unicode編碼值。好比"春節"的返回結果是%u6625%u8282,,escape()不對"+"編碼 主要用於漢字編碼,如今已經不提倡使用。spa
encodeURI()是Javascript中真正用來對URL編碼的函數。 編碼整個url地址,但對特殊含義的符號"; / ? : @ & = + $ , #",也不進行編碼。對應的解碼函數是:decodeURI()。
encodeURIComponent() 能編碼"; / ? : @ & = + $ , #"這些特殊字符。對應的解碼函數是decodeURIComponent()。
假如要傳遞帶&符號的網址,因此用encodeURIComponent()
參考資料(加粗爲重要的資料)
https://blog.csdn.net/angle_lzc/article/details/84864455
https://blog.csdn.net/weixin_34310127/article/details/87616016
https://www.cnblogs.com/huaxingtianxia/p/7125862.html
https://www.oschina.net/question/2600088_2189362?sort=time
http://www.w3school.com.cn/jsref/jsref_escape.asp