那个叫「和」的符号:& 如何从连词,变成了全世界的分隔符
目录
- 一个字符的自我指涉悖论
- 庞贝墙上的涂鸦:& 出生在公元 79 年
- 「and per se and」:一个没有自己名字的字母
- ASCII 0x26:被键盘留下的第 27 个字母
- HTML:& 成了转义符,然后被困住了
- URL:& 从「和」变成了「分开」
- 我给 & 数了一遍家谱
- 连接词的分隔符时代
一个字符的自我指涉悖论
在 HTML 里打一个 &,浏览器会把它吞掉。
不是消失,是「转义」——& 是 HTML 里所有特殊字符的开头:< 是 <,> 是 >, 是不换行空格。如果你想在网页上显示一个真的 &,你得写 &。
一个字符,为了显示它自己,必须先引用它自己。这大概是排版史上唯一一个「需要绕过自己才能出现」的符号。
而更拧巴的是:这个字符的本职工作,是「和」。
庞贝墙上的涂鸦:& 出生在公元 79 年
& 不是被发明的,是被写出来的。
拉丁语里表示「和」的词是 et。公元 1 世纪,罗马抄写员为了省墨,把 e 和 t 连起来写——e 的竖线往上伸,t 的横线往右甩,两个字母融成一个,像两个人在握手。
现存最早的 &,刻在庞贝古城的墙上。公元 79 年维苏威火山把整座城埋进火山灰,也把墙上那句涂鸦里的 & 冻在了时间里。两千年后考古学家把它挖出来,那个符号和今天键盘上的 & 几乎一模一样。
罗马人还有一套更快的速记系统,叫 Tironian notes(蒂罗速记),里面「和」写作 ⁊,像个小写的 7 尾巴翘起来。这个 ⁊ 在爱尔兰语里活到了今天——现代爱尔兰语的「和」(agus)至今可以写作 ⁊,Unicode 里它有个正式名字:TIRONIAN SIGN ET。
所以 & 家族一开始就有两个分支:一个是 et 的合字(&),一个是速记的 ⁊。它们都是「和」,只是笔迹不同。
「and per se and」:一个没有自己名字的字母
& 在英语里有个奇怪的名字:ampersand。
这个词是 "and per se and" 的连读。19 世纪的英语字母表歌,结尾不是 Z,而是:
X, Y, Z, and per se and.
「per se」是拉丁语「本身」的意思。整句意思是:X,Y,Z,还有读作 and 的那个字符本身。孩子们一遍遍唱,唱到最后,"and per se and" 连读成了 "ampersand"。
注意这个细节:& 这个字符没有自己的读音,它读作 and——它的读音就是它表示的那个词。所以当英国人在 18-19 世纪把字母表数成 27 个字母时,第 27 个「字母」是一个读作 and 的符号。
一个字符,没有名字,读作一个词,还挤进了字母表。这事儿放在今天,等于有人建议把 ❤️ 加进 ABC。
ASCII 0x26:被键盘留下的第 27 个字母
1963 年,ASCII 标准把 & 钉在了 0x26 的位置——第 6 个可打印字符,排在 % 后面、' 前面。
ASCII 的诞生是一场大扫除:电报码、打孔卡、各家厂商的私货编码,全被塞进 95 个可打印字符。很多花哨的符号被踢出去了,& 留了下来——因为它是英语里唯一一个「表示 and 的专用字符」,报纸标题、公司名(AT&T)、商标缩写都离不开它。
但 & 留在键盘上的命运,比它自己预料的要忙得多。
HTML:& 成了转义符,然后被困住了
1990 年代,Tim Berners-Lee 发明 HTML 时,需要一个「转义字符」——告诉浏览器「后面这几个字符别按字面理解,它是特殊代码」。他选了 &。
为什么是 &?因为 & 在英语文本里出现的频率刚好:足够常见(大家认识),又足够罕见(不会天天误触发)。选 # 或 @ 都太常见,选 ^ 又太少见。
于是 & 从「连词」变成了「开关」:& + 字母 + ; = 一个特殊字符。它不再表示「和」,而是表示「下一个字符是别的意思」。
这就是自我指涉的起点。HTML 里想写「AT&T」,必须打 AT&T。浏览器渲染时,& 先被当成转义符吃掉,amp; 再吐出一个 &——& 成了唯一一个「为了显示自己必须先背叛自己」的字符。
URL:& 从「和」变成了「分开」
如果说 HTML 里 & 是「转义开关」,那 URL 里 & 直接换了一份新工作:分隔符。
?name=taobao&type=A——第一个参数是 name,& 之后是第二个参数 type。在这里 & 不再表示「和」(A 和 B 在一起),而是表示「A 结束了,B 开始了」——一个纯正的分隔语义。
这是 & 最彻底的翻转:它从「把两个东西连起来」,变成了「把两个东西隔开」。同一个字符,一个语义是融合,一个语义是切分。
1998 年 RFC 2396 正式把 & 定为 query 分隔符时,没人想到二十多年后,全世界每个网页、每个 API 调用、每个搜索引擎的 URL 里,& 都以「分开」的身份高频出现——它作为「和」的本职,反而没人记得了。
我在自己的博客里翻了 537 篇文章的正文,45 篇里躺着 &,形态几乎全是 URL 参数分隔符:resolve?name=www.taobao.com&type=A、wiki.cgi?action=edit&id=某页面&text=...——没有一处是拿它当「和」用的。
我给 & 数了一遍家谱
Unicode 里名字含 AMPERSAND 或 TIRONIAN ET 的字符,我全扫了一遍,10 个:
- U+204A ⁊ — TIRONIAN SIGN ET(罗马速记祖先,爱尔兰语还在用)
- U+0026 & — AMPERSAND(ASCII 0x26 本体)
- U+214B ⅋ — TURNED AMPERSAND(& 转 180°,线性逻辑里的「par」——并行析取)
- U+2E52 ⹒ — TIRONIAN SIGN CAPITAL ET(大写的 ⁊)
- U+FF06 & — FULLWIDTH AMPERSAND(全角,CJK 排版用)
- U+06FD ۽ — ARABIC SIGN SINDHI AMPERSAND(信德语借去用)
- U+FE60 ﹠、U+1F674 🙴、U+1F675 🙵 — 小型/花体装饰变体
- U+E0026 — TAG AMPERSAND(标签字符)
最有意思的是 ⅋:线性逻辑里它表示「平行」——A ⅋ B 是两个进程并行,而不是「A 且 B」。一个把 & 倒过来当新符号用的逻辑学家,等于承认了 & 的「连接」语义需要被倒转才能表达「并行」——连它的翻转体都在干分隔的活。
服务器实测:博客源码(.vue/.ts/.js/.py/.css)里 && 运算符出现 1065 次,& 总计 2652 次。C 语言里 && 是短路与(if (a && b)——两边都为真才继续),& 是位与;C++ 里 & 是引用;Go 里 & 是取地址;Shell 里 cmd & 是把命令丢到后台。每一个用法都跟「和」没关系了——它们是「并且」「并行」「引用」「地址」。
连接词的分隔符时代
中文里,& 没有正式名字。有人叫它「and 符号」,有人误叫「艾特」(那是 @),输入法里它叫「和号」。
中文其实不需要 & 的合字——合字是拼音文字的特权:字母粘在一起省空间。汉字是方块字,「和」字笔画已经够省,没有哪个抄写员会想给「和」画个连笔。所以中文五千年没有 &,拉丁世界两千年有一个。
但中文用户照样每天用 &——在 URL 里,在代码里,在 Excel 的 =A1&B1 拼接里。我们不需要它表示「和」,我们只需要它表示「下一个」。
这就是 & 的语法化:一个连词,在两千年的职业生涯里,从「把 A 和 B 放在一起」,一路变成了「A 和 B 之间划条线」。
庞贝墙上的 & 还在握手。键盘上的 & 已经学会切分了。
它大概是世界上唯一一个——为了显示自己,必须先引用自己的符号。
评论(0)
暂无评论,来写第一条吧~