【转】字符引用和空白字符

出处:http://lifesinger.org/blog/2010/01/charater-references/

字符引用
在 html 中,有三种字符引用方式(参考 HTML5 规范):
1、Named character references, 通过名称来引用。在 HTML 4.01 中称之为 Character entity references(字符实体引用)比如 < >   ", 这里有一份详细列表 named-character-references

2、Decimal numeric character reference, 通过十进制数值来引用。比如 å И

3、Hexadecimal numeric character reference, 通过十六进制数值来引用。比如 å 水在 HTML 4.01 中,上面 2 和 3 归为一种:Numeric character references(字符数值引用)。这里有份非常好的对照表:XHTML Character Entity Reference


在 javascript 中,特殊字符用反斜杠转义,比如 \t, \n, \u0020, 这个不必多说。在 css 中,只支持 unicode 转义。比如 \0020.注意:\u0020 在 js 中,必须有 u, 而且必须 4 位。在 css 中,u 必须省略,同时可以省略前导 0. 比如 \0020 在 css 中可以简化为 \20. 因此那个常见的 clearfix, 可以简化为 content: ‘\20′.content 后直接用空格或其它空白字符,会导致某些兼容性问题。


空白字符
说到字符引用,不得不提一下空白字符。在 JavaScript 的正则里,\s 是 unicode-aware 的,可以匹配 \u0020, \u0009 等空白字符。但各个浏览器的实现有差异,具体可以参见:JavaScript, Regex, and Unicode.
大部分情况下,JS 类库在实现 trim 方法时,使用 /^\s+|\s+$/g 即可。在 jQuery 中,加入了对 \u00A0 的检测:/^(\s|\u00A0)+|(\s|\u00A0)+$/g\u00A0 其实就是   代表 non-breaking space(不间断空白)
关于  , 严格语义上来说,使用场景是不希望自动换行时使用。但现实中,绝大部分情况下,  就用来表示纯粹的空格。因为多个字符空格在 html 中会被当成一个空格,为了连续输出多个空格,只好用   (毕竟用 css 控制太麻烦)。按理说用多个   输出多个空格是最好的选择,但强大的 html 引擎依旧会把多个   转换成一个。
jQuery 的 trim 方法加入 \u00A0, 是种无奈,但也是一种对现实标准的认可。
一切皆权衡。

posted @ 2010-12-10 10:56 chemdemo 阅读(...) 评论(...)  编辑 收藏