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

标签 html ios unicode

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

它在桌面上运行良好,但有人指出,在 iOS 上它显示了一个我以前从未见过的奇怪的“mvs”字符(并且在我的搜索中似乎找不到任何引用)。

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

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 上您会看到:

iOS screenshot

方框字符中的“mvs”是什么?这是我选择的隐形角色特有的东西吗?还是 iOS 正在对不可见的 Unicode 做一些时髦的事情?

最佳答案

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

下面的代码片段可以让您将任意 ASCII 字符串转换为这种编码:

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):

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

关于html - iOS 将不可见的 Unicode 字符显示为包含 “mvs” 的虚线框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56048048/

相关文章:

ios - 将新版本上传到 iTunes 后,我收到了推送通知权利问题

ios - 无法在 AppDelegate 应用程序方法中加载数组中的 HTTP POST 响应数据。如何解决这个问题?

Python 2.7 在 Python 控制台中将 Unicode 打印为方框

javascript - 如何让一个对象一遍又一遍地自动出现

javascript - 响应式设计 : Images in portrait/landscape mode

javascript - 通过javascript向图像源添加字母

HTML/CSS。需要帮助只是让我的边框填满屏幕的整个宽度

ios - 在 GMSMapview iOS 中显示两个位置的定位相机

java - 使用 XSLT 转换 XML 和保留 Unicode 字符

python - 什么取代了 text.latex.unicode?