我正在尝试使用不可见的 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 上您会看到:
方框字符中的“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: ‌‌‌​​‌​‌‌​‌‌‌‌‌‌​​​‌​‌‌​‌‌‌‌
反之(解码回 ASCII):
var decodeInvisibleBinary = function(str) {
var binaryString = '';
var parts = str.split('Ȁ');
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('‌‌‌​​‌​‌‌​‌‌‌‌‌‌​​​‌​‌‌​‌‌‌‌');
// outputs: robo
关于html - iOS 将不可见的 Unicode 字符显示为包含 “mvs” 的虚线框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56048048/