今天在微信看到一段转发消息,有人跟我说在安卓手机上看到的字序是错的,但在电脑上看字序又是正确的。经过我的多次尝试,我发现是这几个字本身不是正常输入法输入的文字。但不知道具体是什么字符或者是什么编码格式的内容导致会出现这样的情况。
这是微信中的原始内容 https://ftp.bmp.ovh/imgs/2021/01/85b23d8e35912c42.png
鼠标选中时会发生变化 https://ftp.bmp.ovh/imgs/2021/01/abb049a1e0893d0f.png
单独将这几个字复制到输入框和 word 中对比 https://ftp.bmp.ovh/imgs/2021/01/e6bda5d7b6cee080.png
应一楼要求,我复制上来,但不能保证内容还是一样的效果,内容如下:
广州增区城新塘凤城凰中英文学校八班七上完晚自习,11 点多老师打电话,没找到,至今未回学校,也没回家,请知情者尽快联重系谢,家人非着常急
1
liqingcan 2021-01-05 10:05:36 +08:00
把文字复制出来我们体验一下这个神奇的效果
|
3
wysnylc 2021-01-05 10:09:07 +08:00 2
|
4
qq515391365 2021-01-05 10:10:53 +08:00 3
是谣言?为了避开检测?
|
5
Shirakawa 2021-01-05 10:13:39 +08:00 1
把这段拖到浏览器地址栏会出现 广州增%E2%80%AE 区城%E2%80%AC 新塘凤%E2%80%AE 城凰%E2%80%AC
应该就是 E2 80 AC 导致的顺序变化 |
7
dier OP @qq515391365 结合楼上的验证,你这么一说还真有可能
|
8
yolee599 2021-01-05 10:22:46 +08:00 via Android 1
插入的编码在字库里没有字体
|
10
hingle 2021-01-05 10:32:07 +08:00
“right to left override” (RLO) character
|
11
a1gslyghmqnl 2021-01-05 10:39:29 +08:00 5
8238 是 0X202E(Unicode Right-to-Left Override, RLO) ,8236 是 0X202C ( Unicode Pop Directional Formatting, PDF)。
在 unicode 字符集中有不少这样的排版字符。遇到 RLO 后,后面的文字从右向左排列;遇到 PDF 后恢复从左向右的排列。当时是为了显示阿拉伯文等从右到左排版的文字而设计的。 所以这就是先随机选取几个子字符串进行翻转,然后在翻转过的字符串两端加排版标记,让它们在屏幕上以从右到左的顺序显示。 参见: https://en.wikipedia.org/wiki/Bidirectional_text#Pops https://www.compart.com/en/unicode/U+202C https://www.compart.com/en/unicode/U+202E |
12
itskingname 2021-01-05 17:06:57 +08:00
@a1gslyghmqnl 那为什么在微信上是正常的呢
|
13
ChaiXingXing 2021-01-05 18:04:40 +08:00
微信的字会有隐藏的字符,包括一些代码,如果代码段是从微信复制下来的很可能没法运行,而且也很难找到问题
|
14
a1gslyghmqnl 2021-01-05 19:04:38 +08:00
@itskingname 微信支持渲染这种排版字符,所以自然是正常显示的。包括这个帖子页面在 chrome 上也是正常显示的。但是在 Chrome 开发者工具里查看 HTML 源码的时候它就被转义了,就像 3 楼那样。
|