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


問題

        我做了微信分享,各種配置都ok,安卓實現分享,但是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()對漢字進行加密,就可以了。

補充說明

        我在獲取urll參數的時候使用的了getUrlParam()這個js方法。這里方法網上有一堆,比較老,在獲取參數的同時使用了unescope()對參數進行了解碼。目前來說escape() http://www.w3school.com.cn/ 都不在推薦使用了。具體代替為encodeURIComponent();

getUrlParam()我的升級代碼

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()不對"+"編碼 主要用於漢字編碼,現在已經不提倡使用。

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

 

 

        

 


免責聲明!

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



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