首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在网页(特别是社交媒体)中搞乱角色

在网页(特别是社交媒体)中搞乱角色
EN

Stack Overflow用户
提问于 2015-01-14 14:23:31
回答 1查看 943关注 0票数 1

你们中的许多人可能见过“巨魔”在社交媒体网站、论坛或youtube等视频流网站上发布的奇怪人物,这些人物把整个网页都搞砸了。

附了一个例子,我从Instagram上捕捉到的一张图片,显示一个用户发布了一条评论,把整个评论部分搞砸了。

这样的事情怎么可能?为什么会这样?我们怎样才能防止这种事情发生在我们的网站上呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-14 21:06:40

这样的事情怎么可能?

Unicode允许以两种方式使用指示符号。

第一种是“合成”形式,其中组合字母和对话词只有一个字符,例如U+00E9拉丁文小写字母E和急性é

第二种是“分解”形式,其中大写字母有一个字符,然后是一个单独的“组合指示”字符。文本处理器和/或字体将这些字符的组合呈现为一个字素,例如,U+0065拉丁文小写字母E,以及U+0301结合了急性。它的优点(也可以说是缺点)是,您可以编写没有组合字符的组合(通常是因为它们从未在任何真实语言中使用过),例如

它允许在一个字母上使用多个组合字符,因为有一些语言在一个字母上使用一个以上的重音(以及其他组合字符的技巧,比如韩语Jamo和藏语连词)。没有内在的限制,多少组合字符可以用来制作一个单一的字形。

许多文本处理程序将试图通过将它们叠加在一起(以及在相反的方向上,表示“下面”的口音)来布局多个组合的双组分。一般来说,这是一种合理的方式来尝试显示一个多重音字母,而在使用中的字体没有特定的字形。但这确实意味着你可以疯狂地使用荒谬的数字来装饰正常的文字线以外的地方。

我们怎样才能防止这样的事情发生在我们的网站上呢?

简单的解决方案是使用CSS overflow: hidden将每个注释放在自己的块中,这样它们就不能转移到其他内容中。

另一种可能性是对多个组合字符序列的输入进行过滤。例如,使用regex,您可以删除:

代码语言:javascript
复制
\p{M}{9,}

as 8是目前在自然语言中已知的组合词的最长序列。如果你只关心简单的字母,你可能会尝试一个较低的数字。为此,您需要一个regex引擎,它支持Unicode字符类(\p),有些语言本机没有。如果您有一种没有此功能的语言,但您确实可以访问Unicode数据库(例如unicodedata中的M ),您可以手动遍历字符,寻找那些具有M字符类的字符。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27945154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档