V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dier
V2EX  ›  问与答

有几个字复制时会看到字的顺序会发生前后的变化,求解!

  •  
  •   dier · 2021-01-05 10:01:37 +08:00 · 2320 次点击
    这是一个创建于 1420 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天在微信看到一段转发消息,有人跟我说在安卓手机上看到的字序是错的,但在电脑上看字序又是正确的。经过我的多次尝试,我发现是这几个字本身不是正常输入法输入的文字。但不知道具体是什么字符或者是什么编码格式的内容导致会出现这样的情况。

    这是微信中的原始内容 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 点多老师打电话,没找到,至今未回学校,也没回家,请知情者尽快联‮重系‬谢,家人非‮着常‬急

    14 条回复    2021-01-05 19:04:38 +08:00
    liqingcan
        1
    liqingcan  
       2021-01-05 10:05:36 +08:00
    把文字复制出来我们体验一下这个神奇的效果
    dier
        2
    dier  
    OP
       2021-01-05 10:08:58 +08:00
    @liqingcan 我编辑了,最后一段内容就是,但不能保证还会有一样的效果
    wysnylc
        3
    wysnylc  
       2021-01-05 10:09:07 +08:00   ❤️ 2
    qq515391365
        4
    qq515391365  
       2021-01-05 10:10:53 +08:00   ❤️ 3
    是谣言?为了避开检测?
    Shirakawa
        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 导致的顺序变化
    dier
        6
    dier  
    OP
       2021-01-05 10:14:03 +08:00
    @wysnylc 这几个字是怎么插入而且不显示的呢?
    dier
        7
    dier  
    OP
       2021-01-05 10:16:39 +08:00
    @qq515391365 结合楼上的验证,你这么一说还真有可能
    yolee599
        8
    yolee599  
       2021-01-05 10:22:46 +08:00 via Android   ❤️ 1
    插入的编码在字库里没有字体
    wysnylc
        9
    wysnylc  
       2021-01-05 10:28:19 +08:00   ❤️ 1
    @dier #6 unicode 隐藏字符
    hingle
        10
    hingle  
       2021-01-05 10:32:07 +08:00
    “right to left override” (RLO) character
    a1gslyghmqnl
        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
    itskingname
        12
    itskingname  
       2021-01-05 17:06:57 +08:00
    @a1gslyghmqnl 那为什么在微信上是正常的呢
    ChaiXingXing
        13
    ChaiXingXing  
       2021-01-05 18:04:40 +08:00
    微信的字会有隐藏的字符,包括一些代码,如果代码段是从微信复制下来的很可能没法运行,而且也很难找到问题
    a1gslyghmqnl
        14
    a1gslyghmqnl  
       2021-01-05 19:04:38 +08:00
    @itskingname 微信支持渲染这种排版字符,所以自然是正常显示的。包括这个帖子页面在 chrome 上也是正常显示的。但是在 Chrome 开发者工具里查看 HTML 源码的时候它就被转义了,就像 3 楼那样。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5643 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:28 · PVG 15:28 · LAX 23:28 · JFK 02:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.