当前位置: 首页 > 面试题库 >

Zalgo文字如何工作?

方季同
2023-03-14
问题内容

我在各种论坛上都看到过奇怪的格式化文本Zalgo,如下所示。看起来很烦人,但它确实使我感到困扰,因为它破坏了我对角色应该是什么样的观念。我的理解是,角色应该在一条线上水平移动并停留在某个“容器”内。显然,Zalgo文本是垂直移动的,似乎不受任何空间限制。

这是Unicode中的错误/缺陷/漏洞利用/黑客吗?这些单个字符是否具有怪异的属性?“什么”在这里发生?

̡̫̤̤̣͉̤ͭ̓̓̇͗̎̀ơ̯̗̱̘̮͒̄̀̈ͤ̀͡ ͓̲͙͖̥͉̹͋ͬ ̳̘̿̃̔̏ͣ͂̉̕ŏ̖̙͋ͤ ̳̘̿̃̔̏ͣ͂̉̕ŏ̖̙͋ͤ
̳̘̿̃̔̏ͣ͂̉̕ŏ̖̙͋ͤ
̳̘̿̃̔̏ͣ͂̉̕ŏ̖̙͙͔̺͇̗̱͋ͤ͗̓̿̆̆̆̆͊͟͜҉҉̠̱̦̩͕̟̹͈̺̹̋̅ͯĺ̡̘̹̻̩̩͎̭̤͍͇̰͋̄͗ͭ̃͗ͮ̐͘
͎̭̤͍͇̰̄͗ͭ̃͗ͮ̐ ͎̭̤͍͇̰̄͗ͭ̃͗ͮ̐ ͎̭̤͍͇̰̄͗ͭ̃͗ͮ̐ ͎̭̤͍͇̰̄͗ͭ̃͗ͮ̐ ͎̭̤͍͇̰̄͗ͭ̃͗ͮ̐
͎̭̤͍͇̰̄͗ͭ̃͗ͮ̐ ͎̭̤͍͇̰̄͗ͭ̃͗ͮ̐ ͎̭̤͍͇̰̄͗ͭ̃͗ͮ̐


问题答案:

文本使用组合字符,也称为组合标记。请参阅_Unicode标准_(PDF)中的组合字符 2.11节。

在Unicode中,字符渲染不使用简单的字符单元模型,其中每个字形都适合具有给定高度的框。组合标记可以在基本字符的上方,下方或内部进行渲染

因此,您可以轻松地构造一个字符序列,包括基本字符和任意长度的“在上方组合”标记,以达到任何所需的视觉高度,前提是渲染软件符合Unicode渲染模型。这样的序列当然没有意义,甚至猴子也可以产生它(例如,给键盘一个合适的驱动器)。

而且,您可以混合“在上方组合”和“在下方组合”标记。



 类似资料:
  • 问题内容: 通常,我在互联网上的许多文章中都读到,当我们编写上面的语句时,会创建两个对象。在堆上创建一个String对象,在Literal Pool上创建一个字符串对象。并且堆对象还引用在Literal Pool上创建的对象。(如果我的陈述是错误的,请更正。) 请注意,以上解释是根据我阅读互联网上一些文章后的理解得出的。 所以我的问题是..有什么方法可以停止在文字池中创建字符串对象。怎么做? [请

  • 问题内容: “ this”关键字如何工作? 问题答案: [§11.1.1]的关键字 所述关键字的计算结果为当前执行上下文的ThisBinding的值 这个绑定是JavaScript解释器在评估JavaScript代码时所维护的,例如特殊的CPU寄存器,其中包含对对象的引用。每当在以下三种情况之一中建立执行上下文时,解释器都会更新ThisBinding: 1.初始全局执行上下文 在顶级代码中评估的J

  • 问题内容: 众所周知,如果不存在,则在字符串池中添加String值的方法。如果存在,它将返回该值/对象的引用。 我需要知道,当我调用此实习生方法时会做什么? 在字符串池中添加具有不同引用的“ dog”或在字符串池中添加对象引用(我认为不是这种情况)? 我试过了 我只想确保当我调用它时在字符串池中创建具有相同值的新对象?现在我有2个对象的值为“ dog”。一个直接存在于堆中,另一个存在于字符串池中?

  • 我试图确切地理解Java字符串是如何不可变的。我明白这应该是一个简单的概念,但在阅读了几个在线网页后,我仍然不太明白。 我不明白Java字符串是如何“不可变”的。我目前有以下代码: 我的输出如下: 如果字符串应该是不可变的,为什么会发生这种情况?为什么我能给字符串重新赋值?

  • 问题内容: 使用 节点-6.0 执行以下操作 。 但是将上面的示例更改为使用process.nextTick()打印A,B,C 这就是我们所说的吗?谁能提供给我一个实时的例子,这将导致重大故障? 问题答案: 首先,让我解释一下代码的工作原理-请参阅添加的代码中的注释: 这与任何语言(如Java,C等)完全一样。 现在,第二个示例: 更新资料 感谢Bergi解释了Zalgo的答案是什么。现在,我更好

  • 我有最新版本的VsCode,我正在按照教程创建一个基本的下一个。js应用程序 我注意到教程使用了JSX in。JS文件,我的编辑器没有抱怨JSX。 这怎么可能?VsCode默认情况下是否识别中的JSX。JS文件?下一步做什么。js自动编译JSX?