这些玩意几年前还挺流行的,相信有不少朋友也参与其中复制过。 那么,在大家复制玩耍的时候,有没有想过这到底是怎么实现的?在继续介绍前,小编得带大家简单回忆一下 Unicode 编码。Unicode( 统一码、万国码、单一码 )是计算机科学领域里的一项业界标准,包含字符集和编码方案。大家都知道,计算机在内部运算和存储的其实都是 0 和 1 ,但是人不可能只看数字,人要看文字,于是大家就建立了一个由数字跟文字互换的对应标准~比如英文字母 A 对应二进制 0110 0001 ,英文字母 B 对应 0110 0010 等等。 最开始各国都有各自的编码方案,毕竟都有自己特色文字嘛,但一阵子时间后发现,乱的一匹!因为同一编码值在不同编码体系中代表不同的字,举个不恰当的例子,小 A 电脑上用的是 ASCII 编码,他发字母 A 给小 B ,而小 B 电脑上用的是 EBCDIC 编码,可能识别成了字母 S ,编码跟解码的方式不同,双方交换信息时就产生了误解。咱们日常生活中遇到的乱码,也是编码跟解码方式不一致的结果~为了避免麻烦,方便协作,大家就约定用统一且唯一的数字编码标准,这也就是 Unicode 。
Unicode 是一个大家庭,看它名字就知道了,万国码!可不得把所有语言中的字符都吸纳进来么,这就引发了很多有趣的事情。 文章开头提到的 “ 击穿 ” 屏幕的东西,就是 Unicode 组合字符,它们会附着在前一个非组合字符上。为了让大家更具象的感受,接下来小编用 Chrome 的开发者工具来帮助演示。打开浏览器按 F12 即可调出该工具
首先我们输入字母 A( \u0041 ) ,然后输入组合字符圆圈 ̊ ( \u030A ),接着将圆圈重复 100 个( repeat( 100 ) )。我们输入:'\u0041' '\u030A'.repeat(100)
组合字符之所以存在主要是为了满足一些语言、文字中的需要,比如中文有声调符号,法文有重音符号,泰文里有声调符号跟母音符号。小编撤回了一条消息并亲了你的小脸
这个 Bug 一出来的时候,可谓是轰动一时,当时各大微信群里大家撤回的不亦乐乎,可惜很快就修复了。
还有那种,艾特他的微信 ID ,艾特出来是倒过来的,举个栗子对方 ID 是:ABCDEF ,但是圈出来变成了:FEDCBA 。像我们用的回车、换行等,对文本进行控制的字符,就叫控制字符。控制字符中有两个哥们,一个叫 RLO ( \U202E ,强制后续字符从右到左显示 ),一个叫LRO ( \U202D ,强制后续字符从左到右显示 )第二行翻译过来是 “ 我喜欢你 ” ,我们在开头加一个 RLO ( \U202E ),可以看到文字变成了 “ 你欢喜我 ” 。控制字符的 “ 玩法 ” 非常多,以前甚至有人用这玩意来伪装木马。举个栗子,你创建一个 exe 文件,命名为 cdtxt.exe,然后重命名,并在 cd 后面插入一个 RLO 控制字符( 从右到左显示 )。这个时候 exe 文件名会倒过来显示成 exe.txt ,看上去就像是一个 txt 文件!~就像上面这样
一般用户乍一看,哪能想到 txt 后缀的文件也能执行起来?结果一打开直接中招。。。
前面提到的,被微信修复的「 撤回消息并亲了你一下 」的效果也是利用这两个控制字符,通过两次调换方向,将一部分文字调换到了系统的 「 撤回了一条消息 」后面显示。控制字符的存在的原因,想必各位朋友已经猜到了,虽然大部分语言的书写习惯是从左到右写,但是有些语言是从右到左的,比如阿拉伯语。 最后小编再教大家一手好玩的吧:利用神秘代码跟朋友表明心声。首先,找一个中文跟 Unicode 互换的网站,将想说的话转换为 Unicode 。
发给朋友,让 TA 长按翻译,再点击翻译进行重译。否则可能会得到一个奇怪的结果 (╯ ̄Д ̄)╯╘═╛ 来源:差评
编辑:Dannis
近期热门文章Top10
1. 套娃吗?你先看这个岛中湖中岛中湖中岛