Google 官方帳號近日在 LinkedIn 上宣布,為求 JSON-LD 剖析行為更符合 JSON 標準,Google 已經更改 JSON-LD 結構化資料嘅解析方式,由以往可能執行多重 HTML 解碼(unescaping),改為只執行單一次解碼。
這個改動代表,如果你嘅 JSON-LD 入面出現雙重轉義(double-escaped)嘅 HTML 實體(例如 & 或者 ✔),Google 將不會再自動將其還原成正確字元。
原文並未列明具體生效日期或時間。
JSON-LD 入面的 HTML 實體雙重轉義問題
JSON-LD 是 Google 建議嘅結構化資料格式,透過 <script type="application/ld+json"> 標籤嵌入在 HTML 頁面入面。因為 JSON-LD 本身係一段被包喺 HTML 文件入面嘅 JSON 字串,不少 CMS 或版面樣板系統(例如 WordPress、Hugo 這類靜態網站產生器)在輸出動態內容(例如文章標題、描述)時,會自動幫你 escape HTML 特殊字元。例如將 & 轉成 &、將 ✔ 呢類符號轉成 ✔ 之類嘅數字實體。
問題在於,如果這個 HTML escape 步驟執行了兩次(例如樣板引擎執行一次、CMS 底層又執行多一次),就會產生所謂「雙重轉義」:原本嘅 & 符號最終變成 &,而非正確的 &。過往 Google 的 JSON-LD 剖析器會嘗試進行多重解碼來補救這類錯誤,即使開發者輸出了雙重轉義嘅內容,Google 都可能自動「攤平」返正確字元。
Google 官方公告內容
根據 Google 在 LinkedIn 的原文,今次改動的重要是讓解析器更符合 JSON 標準。Google 此後只會對 JSON-LD 進行「單一次」HTML 解碼。換言之,雙重轉義嘅實體(例如 & 或 ✔)將唔會再被自動解開兩層。Google 官方明確建議,如果你的網站有使用 JSON-LD 結構化資料,就需要檢查同更新程式碼,改用標準 JSON escape 字元,或者使用 Unicode 十六進位跳脫序列(例如 \u0026)來表示特殊字元,而不再依賴 HTML 實體。
對 SEO 實際影響
這個改動最直接的風險是,原本靠 Google 「幫手」多重解碼來蒙混過關的雙重轉義 JSON-LD,之後可能會被視為格式錯誤,或者輸出到 Google Search Console 嘅結構化資料變成無法正確解析。常見受影響嘅場景包括:
- CMS 樣板同時對輸出內容做咗兩層 HTML escape(例如 WordPress 嘅 the_title() 配合某些外掛,或者 Hugo 的 htmlEscape 函式被重複調用)。
- 文章標題、描述入面包含 & 符號、引號、特殊符號(如 ✔、™、’)的頁面風險較高。
- 從資料庫直接讀取已經 HTML 編碼的內容,再原封不動塞入 JSON-LD 欄位。
建議修正方式(附程式碼範例)
Google 官方建議做法是改用標準 JSON escape,或者 Unicode 十六進位跳脫序列來表示特殊字元,而不要倚賴 HTML 實體編碼。以下是一個簡單對比範例:
錯誤做法(雙重轉義,& 符號經過兩次 HTML encode):
snippet.txt
{
"@type": "Article",
"headline": "Tom & Jerry 專訪"
}正確做法(使用 Unicode 十六進位跳脫序列):
snippet.txt
{
"@type": "Article",
"headline": "Tom \u0026 Jerry 專訪"
}具體修正步驟建議如下:
- 先審視現有 CMS 或樣板系統輸出 JSON-LD 的程式碼路徑,確認內容在輸出到 <script> 標籤之前,只經過一次 HTML escape。最好是完全不需要 HTML escap,因為 JSON-LD 本身並非 HTML 內容,理應直接用標準 JSON 序列化函式輸出(例如 PHP 嘅
json_encode()、JavaScript 嘅JSON.stringify())。 - 如果用使用靜態網站產生器(Hugo、Jekyll 等)或者第三方 SEO 外掛產生 JSON-LD,建議更新到最新版本,並確認他們已經因應最新標準而做出相應調整。,將所有特殊字元改用標準 JSON escape 或 \uXXXX 格式輸出,而非經 HTML 實體轉碼。
- 使用 Schema.org 結構化資料測試工具或者 Rich Results Test 重新驗證頁面。 特別檢查標題、描述、評論等自由文字欄位,這些屬性最容易出現使用者輸入的特殊符號。
對於香港同繁體中文市場的網站,這個改動的直接影響同英文網站相若,並無特別針對中文字元的額外規則。中文字本身不屬於需要 HTML escape 的範圍。不過,不少香港網站的 CMS(尤其是從英文版套版翻譯過來的樣板)都會沿用相同的雙重轉義邏輯來處理中文內容入面的英文標點、品牌名或者符號(例如全形符號轉半形、& 符號在中英夾雜標題入面出現),所以建議一併檢查中英夾雜的頁面標題同描述欄位,避免因為這類混合內容觸發解析錯誤。
關於作者

