编码与转义是否相同?

Tow*_*wer 10 theory encoding escaping

我对编码是否与转义相同的理论感兴趣?根据维基百科

转义字符是对字符序列中的后续字符调用替代解释的字符。

我目前的想法是,它们是不同的。逃避是指您在元字符前面放置一个转义字符以将其标记为与常规字符不同的行为。

另一方面,编码就是将数据转换为另一种形式,并且在想要读取原始内容时,会将其解码回其原始形式。

phi*_*hag 5

转义是编码的一个子集:您只能通过在特殊字符前加上前缀来对某些字符进行编码,而不是将(通常是全部或多个)字符转移到另一种表示形式。

逃逸的例子:

  • 在 SQL 语句中: ... WHERE name='O\' Reilly'
  • 在外壳中: ls Thirty\ Seconds\ *
  • 许多编程语言:"\"Test\"字符串(或"""Test"""

编码示例:

  • 在 HTML 中输出用户输入时替换<&lt;
  • 字符编码,如 UTF-8
  • 使用不包含所需字符的序列,例如\u0061fora


Lie*_*yan 5

它们是不同的,我认为您正确地区分了它们。

编码是将文本的逻辑表示(“逻辑字符串”,例如 Unicode)转换为定义明确的二进制数字序列(“物理字符串”,例如 ASCII、UTF-8、UTF-16)。转义是一个特殊字符(通常是反斜杠:'\'),它启动对转义字符后面的字符的不同解释;当您需要将大量符号编码为较少数量的不同(和有限)位序列时,转义是必要的。