我在各种论坛上看到过类似下面这样的奇怪的Zalgo格式的文本。这看起来有点烦人,但它真的让我很困扰,因为它破坏了我对角色应该是什么样子的概念。我的理解是,角色应该在一条线上水平移动,并停留在一个特定的“容器”中。显然,Zalgo文本是垂直移动的,似乎不受任何空间的限制。
这是Unicode中的一个bug/缺陷/利用/黑客吗?这些独立的角色是否具有奇怪的属性?这里发生了什么?
H̡̫̤̤̣͉̤ͭ̓̓̇͗̎̀ơ̯̗̱̘̮͒̄̀̈ͤ̀͡w͓̲͙͖̥͉̹͋ͬ̊ͦ̂̀̚ ͎͉͖̌ͯͅͅd̳̘̿̃̔̏ͣ͂̉̕ŏ̖̙͋ͤ̊͗̓͟͜e͈͕̯̮̙̣͓͌ͭ̍̐̃͒s͙͔̺͇̗̱̿̊̇͞ ̸̤͓̞̱̫ͩͩ͑̋̀ͮͥͦ̊Z̆̊͊҉҉̠̱̦̩͕ą̟̹͈̺̹̋̅ͯĺ̡̘̹̻̩̩͋͘g̪͚͗ͬ͒o̢̖͇̬͍͇͓̔͋͊̓ ̢͈͙͂ͣ̏̿͐͂ͯ͠t̛͓̖̻̲ͤ̈ͣ͝e͋̄ͬ̽͜҉͚̭͇ͅx͎̬̠͇̌ͤ̓̂̓͐͐́͋͡ț̗̹̝̄̌̀ͧͩ̕͢ ̮̗̩̳̱̾w͎̭̤͍͇̰̄͗ͭ̃͗ͮ̐o̢̯̻̰̼͕̾ͣͬ̽̔̍͟ͅr̢̪͙͍̠̀ͅǩ̵̶̗̮̮ͪ́?̙͉̥̬͙̟̮͕ͤ̌͗ͩ̕͡
Zalgo文本工作,因为组合字符。这些是特殊字符,允许修改前面的字符。
OR
Y +̆= Y̆
y + ̆ = y̆
因为你可以把它们一个叠在另一个上面,你可以得到以下结果:
呃冕啦��
实际上是:
y̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
把东西放在下面也一样:
呃̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆�
实际上就是:
y̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
在Unicode中,将欧洲语言的变音符和国际音标组合在一起的主要块是U+ 0300-U +036F。
更多信息请点击这里
要生成一个组合变音符标记的列表,您可以使用以下脚本(因为链接不断消失)
for(var i=768; i<879; i++){console.log(new DOMParser().parseFromString(“&#”+i+“;”, “text/html”).documentElement.textContent +“ ”+“&#”+i+“;”);}
也可以看看
Mۣۭۦ̾ Vۥۥۭۛۤۥۨۥۧ̾
Zalgo文本工作,因为组合字符。这些是特殊字符,允许修改前面的字符。
OR
Y +̆= Y̆
y + ̆ = y̆
因为你可以把它们一个叠在另一个上面,你可以得到以下结果:
呃冕啦��
实际上是:
y̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
把东西放在下面也一样:
呃̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆�
实际上就是:
y̰̰̰̰̰̰̰̰̰̰̰̰̰̰̰̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆̆
在Unicode中,将欧洲语言的变音符和国际音标组合在一起的主要块是U+ 0300-U +036F。
更多信息请点击这里
要生成一个组合变音符标记的列表,您可以使用以下脚本(因为链接不断消失)
for(var i=768; i<879; i++){console.log(new DOMParser().parseFromString(“&#”+i+“;”, “text/html”).documentElement.textContent +“ ”+“&#”+i+“;”);}
也可以看看
Mۣۭۦ̾ Vۥۥۭۛۤۥۨۥۧ̾
文本使用组合字符,也称为组合符号。请参阅Unicode标准字符组合(PDF)第2.11节。
在Unicode中,字符呈现不使用简单的字符单元模型,其中每个字形都适合一个具有给定高度的框。组合标记可以呈现在基本字符的上方、下方或内部
因此,假设渲染软件符合Unicode渲染模型,您可以轻松地构造一个字符序列,由一个基本字符和“组合以上”标记组成,长度为任何长度,以达到任何期望的视觉高度。这样的序列当然没有任何意义,甚至一只猴子也能做出来(例如,给定一个带有合适驱动程序的键盘)。
你还可以混合使用“上方组合”和“下方组合”的标记。
问题中的示例文本以:
拉丁大写字母H - H
组合拉丁小字母T - ͭ
结合希腊语KORONIS - ̓
组合逗号:̓
组合DOT ABOVE - ̇