角色U+202E从右到左镜像代码,但它非常聪明。 隐藏在M中,
"class M\u202E{..."
我是如何找到这背后的魔力的?
好吧,起初当我看到我强硬的问题时,“这是一种玩笑,失去别人的时间”,但随后,我打开了我的IDE(“IntelliJ”),创建了一个类,并且通过了代码...... 它编译!!! 所以,我看了一眼,发现“公共静态空白”是向后的,所以我带着光标去了那里,擦掉了几个字符...... 会发生什么? 字符开始向后删除,所以,我认为......很少见......我必须执行它...所以我继续执行程序,但首先我需要保存它...那就是我 找到了!。 我无法保存文件,因为我的IDE说某些字符有不同的编码,并指出我在哪里,所以我开始在谷歌研究可以完成这项工作的特殊字符,就是这样:)
一点点
Unicode双向算法和U+202E涉及,简要说明:
Unicode标准规定了称为逻辑顺序的内存表示顺序。 当文本以水平线显示时,大多数脚本从左到右显示字符。 但是,有几个脚本(如阿拉伯语或希伯来语),其中显示的水平文本的自然顺序是从右到左。 如果所有文本具有统一的水平方向,则显示文本的排序是明确的。
但是,因为这些从右到左的脚本使用从左到右书写的数字,所以文本实际上是双向的:从右到左和从左到右文本的混合。 除了数字之外,英语和其他脚本中的嵌入词也从左到右书写,也产生双向文本。 如果没有明确的规范,当文本的水平方向不均匀时,在确定所显示的字符的排序时会出现歧义。
本附件描述了用于确定双向Unicode文本的方向性的算法。 该算法扩展了许多现有实现当前使用的隐式模型,并为特殊情况添加了显式格式化字符。 在大多数情况下,不需要在文本中包含其他信息以获得正确的显示顺序。
但是,在双向文本的情况下,存在隐式双向排序不足以产生可理解文本的情况。 为了处理这些情况,定义了一组最小的方向格式化字符来控制渲染时字符的排序。 这样可以精确控制清晰易读的显示顺序,并确保用于文件名或标签等简单项目的纯文本始终可以正确排序显示。
为什么要创建这样的算法呢?
bidi算法可以呈现阿拉伯语或希伯来语的序列 字符从右到左依次排列。
P.S。:我知道这不是最好的答案,但首先解决问题很有趣:P