微信分享ios 不顯示圖片和簡介問題總結

問題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; //返回參數值
}

url的三個js編碼函數escape(),encodeURI(),encodeURIComponent()

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

相關文章
相關標籤/搜索