首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS将不可见的Unicode字符显示为包含“mvs”的虚线框。

iOS将不可见的Unicode字符显示为包含“mvs”的虚线框。
EN

Stack Overflow用户
提问于 2019-05-09 03:49:09
回答 1查看 169关注 0票数 1

我正在尝试使用不可见的Unicode字符为文本添加水印,以便在有人将其复制/粘贴到其他地方时提供其来源的线索。

它在桌面上工作得很好,但有人指出,在iOS上,它显示了一个我以前从未见过的奇怪的“mvs”字符(在我的搜索中似乎找不到任何参考)。

使用蒙古文元音分隔符(U+180E)和零宽度空格(U+200B)的An example is here。我也通过iOS在这里复制/粘贴了它们,但不确定在桌面上会发生什么:

代码语言:javascript
运行
复制
Yes, there is a X11 way to do this:​​​᠎᠎​᠎​​᠎​​​​​​᠎᠎᠎​᠎​​᠎​​​​

Scroll down and log the OS.
Re-go to your tools/Gcc Terminal/}Tools Configuration.
Include the x11 usr library9

在桌面上,行尾的字符是不可见的,但在iOS上,您可以看到:

方框字符中的“mvs”是什么?这是不是特定于我选择的不可见字符?或者,iOS正在对看不见的Unicode做一些时髦的事情?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-09 22:21:18

MONGOLIAN VOWEL SEPARATOR在iOS上不是不可见的。我切换到由ZERO WIDTH SPACE (U+200B)表示的0和由ZERO WIDTH NON-JOINER (U+200C)表示的1。

下面的代码片段应该允许您将任意ASCII字符串转换为此编码:

代码语言:javascript
运行
复制
var encodeInvisibleBinary = function(str) {
    var digits = [
        '​',  // ZERO WIDTH SPACE
        '‌'   // ZERO WIDTH NON-JOINER
    ];

    var binary = [];
    for (var i = 0; i<str.length; i++) {
        binary = binary.concat(str[i].charCodeAt(0).toString(2).split(''));
    }
    binary = _.map(binary, function(c) {
        return digits[c];
    });
    return binary.join('');
};

encodeInvisibleBinary('robo');
// outputs: &#x200c;&#x200c;&#x200c;&#x200b;&#x200b;&#x200c;&#x200b;&#x200c;&#x200c;&#x200b;&#x200c;&#x200c;&#x200c;&#x200c;&#x200c;&#x200c;&#x200b;&#x200b;&#x200b;&#x200c;&#x200b;&#x200c;&#x200c;&#x200b;&#x200c;&#x200c;&#x200c;&#x200c;

反之亦然(解码回ASCII):

代码语言:javascript
运行
复制
var decodeInvisibleBinary = function(str) {
    var binaryString = '';
    var parts = str.split('&#x200');
    var i;
    for(i=0; i<parts.length; i++) {
        if(parts[i] == 'b;') binaryString += '0';
        if(parts[i] == 'c;') binaryString += '1';
    }
    var binaryChars = binaryString.split(/([01]{7})/);
    var ret = '';
    for(i=0; i<binaryChars.length; i++) {
        ret += String.fromCharCode(parseInt(binaryChars[i], 2));
    }
    return ret;
};

decodeInvisibleBinary('&#x200c;&#x200c;&#x200c;&#x200b;&#x200b;&#x200c;&#x200b;&#x200c;&#x200c;&#x200b;&#x200c;&#x200c;&#x200c;&#x200c;&#x200c;&#x200c;&#x200b;&#x200b;&#x200b;&#x200c;&#x200b;&#x200c;&#x200c;&#x200b;&#x200c;&#x200c;&#x200c;&#x200c;');
// outputs: robo
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56048048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档