日常效率 · 實用教程
二維碼裏的網址參數爲什麼丟了:區分原始鏈接、參數編碼與掃碼結果
掃碼後網址少了參數,先對比原始鏈接、二維碼解碼文本和最終落地地址。用假設示例說明完整URL爲何不能統一替換&,以及嵌套網址如何作爲參數值編碼。
先看結論
掃碼後地址欄少了參數,先不要重新生成二維碼。保存生成時輸入的網址,讀取二維碼實際包含的文本,再查看瀏覽器最終落地地址,找到參數在哪一步發生變化。
打開相關入口開始前先確認
如果輸入框要求的是“完整目標網址”,應保留參數之間的 &。只有當一個網址被放進另一個網址的參數值中時,才需要按參數值處理這個嵌套網址。把整條鏈接的 & 全部替換成 %26,可能直接改變參數結構。
先分清完整網址與參數值
以下地址均爲使用 example.com 編寫的假設樣例,不代表真實活動頁面。
https://example.com/signup?source=poster&campaign=autumn在這個完整網址中,source 和 campaign 是兩個參數,& 用於分隔它們。如果改成下面這樣:
https://example.com/signup?source=poster%26campaign=autumn按常見查詢參數解析方式,source 的值會變成 poster&campaign=autumn,原本獨立的 campaign 參數就不再存在。這種情況應修正輸入網址,不能靠提高二維碼清晰度解決。
encodeURIComponent() 處理的是 URI 組件,會編碼包括 & 在內的字符;因此要先確定編碼對象是參數值,還是準備直接打開的完整網址。MDN 的 encodeURIComponent 說明解釋了它的用途與編碼範圍。
如果只是將完整鏈接輸入二維碼工具,可先按 二維碼生成與掃描指南完成基礎操作,再用下文的三層對照覈對內容。
嵌套網址作爲參數值時,交給參數工具編碼
假設有一箇中轉頁面,需要通過 target 參數接收完整目標網址。此時目標網址中的問號和參數分隔符,都屬於 target 的值。可以用下面的 JavaScript 構造外層地址:
const target = "https://example.com/signup?source=poster&campaign=autumn";
const query = new URLSearchParams({ target });
const outerUrl = "https://example.com/redirect?" + query.toString();按這段構造方式,得到的外層網址應爲:
https://example.com/redirect?target=https%3A%2F%2Fexample.com%2Fsignup%3Fsource%3Dposter%26campaign%3Dautumn這裏的 %26 位於嵌套參數值內部,用來保留目標網址裏的分隔符。它與上一節直接修改目標網址的做法,處於不同層次。
URLSearchParams 在序列化時處理參數編碼,傳入單獨的鍵和值時應使用未編碼內容。不要先給 target 做一次編碼,再將編碼結果傳給它,否則可能形成重複編碼。具體行爲見 MDN URLSearchParams 文檔。
上述代碼只演示地址組裝;中轉頁面是否存在、是否接受 target、如何驗證和跳轉,都由目標服務決定。不要把這個示例地址當成已經可用的跳轉服務。
用三層記錄定位參數在哪一步變化
| 層次 | 保存什麼 | 如何比較 |
|---|---|---|
| 原始鏈接 | 生成前實際輸入的完整文本 | 對照參數名、參數值及嵌套層次 |
| 碼中內容 | 解碼得到的原始文本 | 與生成輸入逐字比較,檢查截斷或額外字符 |
| 落地結果 | 打開後最終地址及必要的跳轉記錄 | 查看參數是否在跳轉過程中改變,以及頁面是否識別它們 |
建議先在副本上完成以下檢查:
- 把完整目標網址保存到純文本文件,避免只憑截圖或被縮短顯示的鏈接判斷。
- 用能展示原始解碼內容的工具讀取生成圖片,複製文本,與輸入比較。只展示網頁標題的掃碼界面不夠用來覈對參數。
- 當碼中內容與輸入一致時,再打開該地址,記錄最終網址。如果中間發生跳轉,交給網站維護方覈對各次跳轉的目標。
- 對照業務預期確認頁面確實使用了參數。頁面能打開,只說明訪問成功,不能單獨證明活動標記或篩選條件已經生效。
若碼中網址完整,但落地頁已失效,應轉查 靜態二維碼與目標鏈接有效性。鏈接失效與參數丟失需要分別處理,重新導出同一張碼並不會改變目標服務的狀態。
中文、重複編碼與印刷問題分別檢查
參數含中文時,不要僅憑地址欄顯示中文還是百分號序列判斷丟失。應比較解析後的參數名和值,同時保留原始文本作爲證據。若出現 %25 等編碼片段,也先檢查處理層次;它可能來自對百分號的再次編碼,不能看到就全部刪除。
準備印刷時,在內容覈對通過後,再按 二維碼印刷檢查檢查最終尺寸、版面與掃描結果。內容正確和成品可識別,是兩項獨立驗收。
最後可用四個問題收尾:輸入的是完整網址還是嵌套值?碼中內容是否與輸入相同?跳轉是否改變了參數?頁面是否按預期使用參數?保留這四項答案,比反覆嘗試替換符號更容易定位問題。
公開物料使用的樣本不應攜帶密碼或臨時訪問令牌。先用不含憑據的鏈接完成核對,正式交付時保留原始網址、生成圖片與最終檢查記錄。
依據與進一步閱讀
試着完成自己的任務
先用一份小樣本驗證流程,再處理正式文件。指南免費閱讀,工具的體驗範圍與積分價格見產品詳情。
前往相關頁面