網址的中文不是中文,更不是 UTF-8

 

網址的中文不是中文,這個觀念一直是我「網址中不一定要放中文」的核心邏輯,尤其在搜尋引擎中你搜尋的關鍵字跟網址中的中文編碼就不一樣了
中文在各種編碼的呈現
根據 W3C 的定義

URL encoding converts characters into a format that can be transmitted over the Internet. URLs can only be sent over the Internet using the ASCII character-set. Since URLs often contain characters outside the ASCII set, the URL has to be converted into a valid ASCII format. URL encoding replaces unsafe ASCII characters with a "%" followed by two hexadecimal digits. URLs cannot contain spaces. URL encoding normally replaces a space with a plus (+) sign or with %20.[1]

然後最近已經看到多次 SEO 相關文章講到網址的時候說:網址是 UTF-8 的格式。這讓我頭很痛,網址(嚴格來說 URI)的中文不是中文,也不是 UTF-8 編碼 是 UTF-8 編碼(而且還要是 16 進位編碼)過後,再經過 url encoding 的結果[2]

另外 URL encoding 的解碼,是依據「網頁編碼」是什麼還會有所變化,雖然這年頭 big5 跟 unicode 的網頁已經屬於稀世珍物,但如果是「中文」來說,網址的呈現是 

  • UTF-8 的網頁是 %e4%b8%ad%e6%96%87 
  • Big5 的網頁是 %a4%a4%a4%e5 
  • unicode 的網頁是 %u4e2d%u6587 
為什麼要強調 URI (也可以說 URL 啦)呢?因為「網域的中文也不是中文」而那更是另外一種編碼了...

參考資料

  1. https://www.w3schools.com/tags/ref_urlencode.ASP 
  2. https://zh.wikipedia.org/zh-tw/%E7%99%BE%E5%88%86%E5%8F%B7%E7%BC%96%E7%A0%81 

留言