上图中的人物是在几个月前由计算机安全专家MikkoHyppönen啾啾 ,他以计算机病毒和TED计算机安全方面的工作而闻名。 关于这个,我只会发表一个形象,但你明白了。 这显然不是你想要传播你的网站,并吓坏游客。 经过进一步的检查,这个angular色似乎是一个泰国字母组合的超过87个变音符号(有甚至是一个限制?!)。 这让我想到安全性,本地化以及如何处理这种input。 我的search引导我在Stack上提出这个问题 ,而Michael Kaplan则发表了一篇关于剥离符号的博客文章。 在这个例子中,他演示了如何将一个string分解为它的“基本”字符(为简洁起见,在这里简化): StringBuilder sb = new StringBuilder(); foreach (char c in "façade".Normalize(NormalizationForm.FormD)) { if (char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark) sb.Append(c); } Response.Write(sb.ToString()); // facade 我可以看到这在某些情况下会是有用的,但是在用户input方面,它将删除所有的变音符号。 正如卡普兰指出的那样,删除某些语言的变音符号可以完全改变这个词的含义。 这引出了一个问题: 如何在用户input/输出中允许一些变音符号,但排除其他极端情况,如MikkoHyppönen的人物angular色?
กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็็็็็็็็็ก็็็็็็็็็็็็็็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ก็็็็็็็็็็็็ ็็็็็็็กิิิิิิิิิิิิิิิิิิิิก้้้้้้้้้้้้้้้้้้้้ 这些最近出现在Facebook的评论部分。 我们如何消毒呢?
我已经看到了像下面写在各种论坛上的称为Zalgo的奇怪格式的文本。 这看起来有些恼人,但它真的困扰我,因为它破坏了我对angular色应该是什么的概念。 我的理解是,一个angular色应该水平移动,保持在一个特定的“容器”内。 Zalgo文本显然是垂直移动的,似乎不受任何空间限制。 这是一个错误/缺陷/利用/黑客在Unicode? 这些个性怪异的属性? 这里发生了什么? H̙͉̥̬͙̟̮͕ͤ̌͗ͩ̕͡w͓͙͖̥͉̹͎͉͖͋ͬ̊ͦ̌ͯ̚d͈͕̯̮̙̣͓͌ͭ̍̐͒e͈͕̯̮̙̣͓͌ͭ̍̐͒s̸͙͔̺͇̗̤͓̞̫̿̊̇ͩͩ͑̋ͮͥͦ̊͞Z̆̊͊҉҉̠̦̩͕ą̟̹͈̺̹̋̅ͯĺ̡̘̹̻̩̩͋͘g̪͚͗ͬ͒o̢̢̖͇̬͍͇͓͈͙̔͋͊̓ͣ̏̿͐ͯ͠t̛͓̖̻ͤ̈ͣ͝e͋̄ͬ̽͜҉͚̭͇x͎̬̠͇̌ͤ̓̓͐͐͋͡ţ̗̹̝̮̗̩̳̄̌ͧͩ̾̕͢w͎̭̤͍͇̰̄͗ͭ͗ͮ̐o̢̯̻̰̼͕̾ͣͬ̽̔̍͟r̢̪͙͍̠ǩ̵̶̗̮̮ͪ?̙͉̥̬͙̟̮͕ͤ̌͗ͩ̕͡