如果你想了解反向QQ昵称的原理,移步正文
思考题答案(附过程):
①如果把“汪”替换成“123”,显示出的文本是什么样的?
|→
@|→
@g|→
...
@gloria|→
遇到控制字符“U+202E”,从右向左书写
@gloria←|
后面的字符是“123”
@gloria←|1
由于现在是从右向左书写,因此
@gloria←|21
@gloria←|321
然后是控制字符“U+202D”,从左向右书写
@gloria|→321
接下来是一样的
@gloria【|→321
@gloria【括|→321
@gloria【括号|→321
...
@gloria【括号里是我的消息】|→321
结果:@gloria【括号里是我的消息】321
可以看出对于这种形式的昵称,两个控制字符之间的文本会被反转。因此如果想要实现网上 printf("【括号里是别人的消息】"); 的效果,需要写成 printf("<从右向左>;)"<从左向右>,而不是 ");(更正:应该是;(",实际测试发现,强制从右向左会导致左右括号翻转/互换)
②如果去掉最后一个从强制左向右控制字符“U+202D”会有什么效果呢?
|→
@|→
@g|→
...
@gloria|→
遇到控制字符“U+202E”,从右向左书写
@gloria←|
下一个字符是“汪”
@gloria←|汪
由于现在是从右向左书写,因此接下来的消息会反向显示
@gloria←|【汪
@gloria←|括【汪
@gloria←|号括【汪
@gloria←|里号括【汪
...
@gloria←|】息消的我是里号括【汪
结果:@gloria】息消的我是里号括【汪
这就是让别人的消息反向显示的原理,实现这个效果很简单,在昵称最后面添加一个“U+202E”就可以了