我正在尝试使用不可见的Unicode字符为文本添加水印,以便在有人将其复制/粘贴到其他地方时提供其来源的线索。
它在桌面上工作得很好,但有人指出,在iOS上,它显示了一个我以前从未见过的奇怪的“mvs”字符(在我的搜索中似乎找不到任何参考)。
使用蒙古文元音分隔符(U+180E)和零宽度空格(U+200B)的An example is here。我也通过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做一些时髦的事情?
发布于 2019-05-09 22:21:18
MONGOLIAN VOWEL SEPARATOR
在iOS上不是不可见的。我切换到由ZERO WIDTH SPACE
(U+200B
)表示的0和由ZERO WIDTH NON-JOINER
(U+200C
)表示的1。
下面的代码片段应该允许您将任意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
https://stackoverflow.com/questions/56048048
复制相似问题