HTML规范里定义了一种机制叫character references,有了它我们就可以在HTML网页中引用任何字符(当然前提是User Agent支持).
character references在HTML里面主要有两种呈现形式:
- Numeric character references (either decimal or hexadecimal).
- Character entity reference
Numeric character references
利用字符在document character set中的code position来引用字符, 也有两种呈现形式:
- The syntax "&#D;", D为十进制
- The syntax "&#xH;" or "&#XH;", H为十六进制
一些numeric character references的例子:
å 代表了挪威语里面的"å"
水 代表中文里面的"水"字
Character entity references
为了给网页编写者一种比Numeric character references更"直觉"的方式来引用字符, 比如上面的"å", 在character entity references中表示为"å", 相对"ī"来说好记多了.
需要注意一点, character entity references是case-sensitive的, Å与å就分别表示Å, å. 还有四个比较特殊的字符也需要注意一下(直接使用它们会导致网页解析异常):
- "<" represents the < sign.
- ">" represents the > sign.
- "&" represents the & sign.
- "" represents the " mark.
有了上面对于character references的认识, 如果我们要在网页中直接呈现HTML代码内容, 并且在只有Latin-1编码的情况下输出所有在character entity references中存在的字符, 应该如何来实现呢? 答案就是: escape
具体escape的实现就不过多描述了, 几乎每种语言都有官方或第三方的实现, 比如: Google Toolbox For Mac就提供了Objective-C的版本.