如何在html输入字段中执行此操作?
或者这个:
ه҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉҉҉҉҉҉҉҉҉҉҉҉҉҉ه҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉҉҉҉҉҉҉҉҉҉҉҉҉҉
我刚从Twitter个人资料中复制并粘贴。我猜他们用十六进制粘贴unicode字符,但是看http://www.htmlescape.net/unicode_charts.html我找不到任何垂直或左边溢出的字符。
我问,因为我想知道如何避免这种情况。人们可能会开始使用它并打破许多可评论网站的外观和风格,就像我一样。遗憾...
答案 0 :(得分:3)
这就是所谓的Combining Diacritical Marks。特别是问题中的代码使用U+0365 COMBINING LATIN SMALL LETTER I字符。您可以使用以下代码轻松地在浏览器中创建非常相似的内容:
var iMark = String.fromCharCode(869); // 0x365 in decimal
var testString = 'f' + Array(11).join(iMark); // f with 10 dots above
official FAQ中详细描述了这种行为(将所有这些标记组合而不是仅使用一个标记):
问: Unicode不包含我需要的字符,即拉丁文字符 带有某种变音标记的字母。你可以加一下吗?
答: Unicode几乎可以表达您需要的任何内容 使用拉丁语,IPA或其他基础组合的任何研究领域 字母与各种组合变音符号。例如,如果 你需要一个高度专业化的角色,比如“Z with stroke, cedilla和umlaut“,你可以用三个来获得这个组合 现有的字符代码组合:
U+01B5 LATIN CAPITAL LETTER Z WITH STROKE U+0327 COMBINING CEDILLA U+0308 COMBINING DIAERESIS
使用适当的渲染软件,该序列应该产生一个 像这样的字形组合:
即使组合在特定字体中不可用,也是如此 明确的和符合Unicode的系统应该传输和保留 没有失真的序列,可以进行处理 编程。
如何处理这种(潜在的)肮脏而不影响有效文本?我想,一种可能的方法是首先对字符串进行规范化(NFC),然后剥离所有无效字符。