这些字符是什么?

时间:2013-11-30 22:32:38

标签: html character-encoding textfield

如何在html输入字段中执行此操作?

或者这个:

ه҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉҉҉҉҉҉҉҉҉҉҉҉҉҉ه҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉̿҉҉҉҉҉҉҉҉҉҉҉҉҉҉

我刚从Twitter个人资料中复制并粘贴。我猜他们用十六进制粘贴unicode字符,但是看http://www.htmlescape.net/unicode_charts.html我找不到任何垂直或左边溢出的字符。

我问,因为我想知道如何避免这种情况。人们可能会开始使用它并打破许多可评论网站的外观和风格,就像我一样。遗憾...

1 个答案:

答案 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
     

使用适当的渲染软件,该序列应该产生一个   像这样的字形组合:   enter image description here

     

即使组合在特定字体中不可用,也是如此   明确的和符合Unicode的系统应该传输和保留   没有失真的序列,可以进行处理   编程。

如何处理这种(潜在的)肮脏而不影响有效文本?我想,一种可能的方法是首先对字符串进行规范化(NFC),然后剥离所有无效字符。