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

出处: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 @   chemdemo  阅读(5253)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示