回答
Encoding描述文件的字符是如何物理寫入二進制(如Unicode或ANSI)。
Escaping指替換特殊字符(如<
和>
)的過程中與它們XML entity當量(如<
和>
)。對於URL,轉義是指用%
(如%20
)開頭的字符替換單個空白字符。
按語言不同逃逸,但編碼通常是廣泛接受的標準。有時這些術語被模棱兩可地使用(特別是在用於表示轉義的編碼方面),但它們被很好地定義和區分。
在每一個Web應用程序,數據由像視圖層,模型層,數據庫層,等各層「應該」被獨立地開發,以滿足各種擴展性和維護要求的各種層。
現在,基本上,每一層都需要「對話」隔日,他們有在通過它可以談的語言來決定。 這被稱爲編碼。各類編碼時存在類似ASCII,UTF-8,UTF-16等 現在,如果用戶是中國人還是日本人,例如,然後他ASCII是行不通的,因此,他將與UTF-16或繼續任何其他的編碼技術都可以保證中文溝通。所以從網頁層面來說,漢字將通過業務層,然後到達數據層,並且在任何地方都會使用相同的「編碼」方案。
爲什麼?
現在假設,你的Web層,在UTF-16發送數據時,支持中國的語言,但數據庫層接受,只有ASCII,那麼數據庫層會得到困惑,你在說什麼!它只懂英文字,不會理解其餘的。 這是關於編碼。
轉義:
有一定的一套名爲「元數據」的數據具有不同於瀏覽器的角度看有特殊意義的。例如,<>
是來自瀏覽器角度的元數據。瀏覽器解析器知道這些<>
中包含的所有數據都將被解釋。 現在攻擊者使用這種技術來混淆瀏覽器。 例如:
<input type="text" value="${name} />
如果我更換
name="/><script>alert(document.cookie)</script>
然後在瀏覽器看到的結果代碼的名稱將是
<input type="text" value=""/><script>alert(document.cookie)</script> />
手段,現在你需要指導瀏覽器,無論我放在name=""
應該「逃脫」,或應被視爲僅數據。所以有各種功能,要麼編碼/轉義<>
作爲他們的HTML等效%3C%3E
,所以現在瀏覽器知道這需要被區別對待。基本上逃避意味着逃避其實際意義(粗略地說)。
<input type="text" value="${fn:escapeXML(name)} />
使用JSTL。
TL; DR 這兩個術語是可互換的(如果你的意思是轉換某些字符,所以他們將被解釋爲普通的字符串數據)。這場辯論很古老。來自CWE-116: Improper Encoding or Escaping of Output:
「編碼」和「轉義」術語的用法差別很大。例如,在某些編程語言中,術語互換使用 ,而其他語言提供的API使用 條款來執行不同的任務。這種重疊的用法擴展到Web, ,如「escape」JavaScript函數,其目的是聲明爲 編碼。當然,編碼和轉義的概念在幾十年前就已經在網絡上出現了。考慮到這樣的背景,CWE很難採用一致的詞彙,不會被某些 選區誤解。
搞笑的足夠的JavaScript還具有encodeURIComponent()
,其specification避免完全的討論:
encodeURIComponent函數計算 URI的在 的新版本,其某些字符的每個實例被替換一個,兩個, 三個或四個轉義序列,表示 字符的UTF-8編碼。
個人我相信這是更合適的指代一般方法爲「編碼」,因爲您正在創建code要由通過通信信道(一條標記/編程代碼)發送和解釋接收器(解析器)。我認爲用<
這樣完全不同的東西代替<
並稱之爲「逃避」是愚蠢的。
- 1. 編程術語
- 2. 術語:術語'saga'的含義
- 3. 術語未定義
- 4. 編程術語表
- 5. 編碼技術
- 6. Facebook編碼技術
- 7. Jpeg編碼技術
- 8. jQuery XML請求的轉義引語
- 9. URL/HTML轉義/編碼
- 10. PHP轉義編碼報價
- 11. TypeError:術語未定義?
- 12. 單子非編程術語
- 13. 環繞編程術語
- 14. WordPress短代碼術語
- 15. .Net XML序列化和轉義或編碼字符
- 16. 如何使用xQuery取消編碼轉義的XML
- 17. Android - 用俄語解析xml(編碼)
- 18. 封閉術語和語義疑問
- 19. Drupal:將分類術語名稱轉換爲術語ID
- 20. 獲取術語名稱的術語編號
- 21. 如何從xml轉義javascript代碼?
- 22. 從XML轉義到ActionScript 3代碼
- 23. 使用Saxon解碼轉義的XML HE
- 24. 如何轉換HTML編碼的XML?
- 25. 與XML更改相關的術語
- 26. 轉換未知編碼希伯來語
- 27. xslt在xml中轉義xml
- 28. HTML編碼塊 - 無效的表達術語':'
- 29. 「無字符串編碼」是一個通用術語嗎?
- 30. PHP XML編碼
迂腐的澄清:「unicode」不是一種編碼,而是一種字符集(UTF-8,ISO8859-1,CP850是編碼的例子)。可悲的是,Unicode和UTF-8經常被用作同義詞,而不是。 – tokland 2010-06-05 21:39:30
同意「編碼」是w/r/t「字符編碼」的正確術語,但在涉及到替換字符以避免特殊解釋的過程中,這些術語不是「明確定義和明確的」。看到我的答案。 – 2013-04-20 21:08:04