我见过很多格式化的文字叫做Zalgo,就像下面写在各种论坛上一样。这看起来有点烦人,但它真的让我感到烦恼,因为它破坏了我对角色应该是什么的概念。我的理解是,一个角色应该在一条线上水平移动并保持在某个“容器”内。显然Zalgo文本是垂直移动的,似乎并不局限于任何空间。
这是Unicode中的错误/漏洞/漏洞/黑客攻击吗?这些个性角色是否具有奇怪的属性? “这是什么”在这里发生?
H̡̫̤̤̣͉̤ͭ̓̓̇͗ơ̯̗̘̮͒̄̈ͤ͡w͓͙͖̥͉̹͓͙͖̥͉̹͋ͬ̊ͦ͋ͬ̊ͦ̚̚d̳̘̿̔̏ͣ̉̕ŏ̖̙͋ͤ̊͗̓͟͜e͈͕̯̮̙̣͓͌ͭ̍̐͒s͙͔̺͇̗͙͔̺͇̗̿̊̇̿̊̇͞͞Z̆̊͊҉҉̠̦̩͕ą̟̹͈̺̹̋̅ͯĺ̡̘̹̻̩̩͋͘g̪͚͗ͬ͒o̢̢̖͇̬͍͇͓̖͇̬͍͇͓̔͋͊̓̔͋͊̓t̛͓̖̻ͤ̈ͣ͝e͋̄ͬ̽͜҉͚̭͇x͎̬̠͇̌ͤ̓̓͐͐͋͡ţ̗̹̝̗̹̝̄̌ͧͩ̄̌ͧͩ̕̕͢͢w͎̭̤͍͇̰̄͗ͭ͗ͮ̐o̢̯̻̰̼͕̾ͣͬ̽̔̍͟r̢̪͙͍̠ǩ̵̶̗̮̮ͪ?̙͉̥̬͙̟̮͕ͤ̌͗ͩ̕͡
答案 0 :(得分:401)
文本使用组合字符,也称为组合标记。见Combining Characters in the Unicode Standard的第2.11节(PDF)。
在Unicode中,字符呈现不使用简单的字符单元格模型,其中每个字形适合具有给定高度的框。组合标记可以在基本字符的上方,下方或内部呈现
因此,假设渲染软件符合Unicode渲染模型,您可以轻松构建一个由基本字符和任意长度的“组合上方”标记组成的字符序列,以达到任何所需的视觉高度。这样的序列当然没有任何意义,甚至猴子也可以产生它(例如,给定一个带有合适驱动程序的键盘)。
你可以混合“上面合并”和“下面合并”标记。
问题中的示例文本以:
开头H
ͭ
̓
̓
̇
答案 1 :(得分:232)
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ͣͥͭ͛ͤͮͥͨͥͧ̾