这个可爱的Unicode



这是最精彩的Unicode“好东西”以及软件包和资源的更新列表。

Unicode很棒! 在它出现之前,国际交流就已经精疲力尽:每个人都在ASCII的上半部分(即所谓的代码页)中定义了自己的扩展字符集。 这造成了冲突。 试想一下,德国人必须与韩国人进行谈判,其代码页在哪里。 幸运的是,Unicode出现并引入了一个通用标准。 Unicode 8.0包含来自129多个脚本的120,000个字符。 无论是现代的还是古代的,仍然没有被解密。 Unicode支持从左到右和从右到左的文本,覆盖字符,并包括各种文化,政治,宗教符号和表情符号。 Unicode非常人性化,其功能被大大低估了。

目录内容



简要介绍


Unicode标准中包含哪些字符?


Unicode标准定义了主要现代语言中字符的代码。 这些是欧洲字母脚本,从右到左的中东脚本以及许多亚洲脚本。

该标准还包含标点符号,变音符号,数学符号,技术符号,箭头,装饰符号,表情符号等。它为变音符号提供了更改字符符号的代码,例如波浪号(〜)。 它们与基本字符结合使用以表示重音字符(例如ñ)。 通常,Unicode版本9.0提供了来自世界字母表,表意文字集和字符集的128,172个字符的代码。

最常见的字符放置在前64K代码点中,这是代码空间的一个区域,称为主多语言平面,简称BMP。 还有其他十六种其他平面可用于编码其他字符,其中有超过850,000个未使用的代码点。 他们可能会派上用场,以便在将来的标准版本中添加新字符。

Unicode标准还保留了代码点供私人使用。 供应商或最终用户可以在自己的系统中为其字符指定字符,或将它们与专用字体一起使用。 如果6400不足以用于特定应用,则BMP具有6400个供私人使用的代码点和131068个供私人使用的其他代码点。

Unicode字符编码


字符编码标准不仅确定每个字符的标识及其数字值或代码点,还确定如何以位表示此值。

Unicode标准定义了三种编码形式,它们允许传输相同的数据:一个字节,一个字和一个双字(即,每单位代码8、16或32位)。 所有这三种形式都编码相同的公共字符集,并且可以有效地相互转换而不会丢失数据。 Unicode协会完全认可使用这些编码形式中的任何一种作为实现Unicode标准的公认方式。

UTF-8在HTML和类似协议中很流行。 UTF-8是将所有Unicode字符转换为可变字节长度编码的一种方式。 它的优点是,与熟悉的ASCII集相对应的Unicode字符具有与ASCII相同的字节值,并且转换为UTF-8的Unicode字符可以与许多现有软件一起使用,而无需进行重大软件修改。

UTF-16在许多需要平衡对字符的有效访问与经济存储之间的环境中很流行。 它非常紧凑,所有常用字符都放在一个16位代码块中,而其他所有字符都可以通过成对的16位代码块使用。

UTF-32在不考虑内存量但需要访问单个固定宽度代码中的字符的情况下很有用。 在这里,每个Unicode字符都被编码在单个32位代码块中。

所有三种编码形式的每个字符都要求不超过4个字节(或32位)。

谈论数字


Unicode字符集分为17个主要段(平面),这些主要段又分为块。 在每个平面中都有65 536(2 16 )个代码点的位置,总共创建了1,114,112个代码点。 公司/用户自行决定分配两个“专用平面”(第16号和第17号)以供使用。 它们具有131,072个代码点。

不行职称射程
1。主多语种飞机(从U + 0000到U + FFFF)
2。额外的多语种飞机(从U + 10000到U + 1FFFF)
3。附加表意平面(从U + 20,000到U + 2FFFF)
4。第三表意平面(从U + 30000到U + 3FFFF)
5,飞机5(未使用)(从U + 40,000到U + 4FFFF)
6。飞机6(未使用)(从U + 50,000到U + 5FFFF)
7飞机7(未使用)(从U + 60,000到U + 6FFFF)
8。平面8(未使用)(从U + 70,000到U + 7FFFF)
9。飞机9(未使用)(从U + 80,000到U + 8FFFF)
10。飞机10(未使用)(从U + 90,000到U + 9FFFF)
11。平面11(未使用)(从U + A0000到U + AFFFF)
12平面12(未使用)(从U + B0000到U + BFFFF)
13平面13(未使用)(从U + C0000到U + CFFFF)
14。平面14(未使用)(从U + D0000到U + DFFFF)
15专门的附加飞机(从U + E0000到U + EFFFF)
16。私人区域-A(从U + F0000到U + FFFFF)
17。私人私人空间-B(从U + 100000到U + 10FFFF)

第一个平面称为主多语言平面或BMP。 它包含从U + 0000到U + FFFF的代码点,即最常用的字符。 其余的十六个平面(U + 010000→U + 10FFFF)被称为附加或星空。

代理对UTF-16


主平面外部的符号(如表示中心的四卦符号(U + 1D306))可以用仅两个16位代码单元的UTF-16编码:0xD834 0xDF06。 这称为代理对。 请注意,代理对仅代表一个字符。

代理对的第一个代码单元始终在0xD800到0xDBFF的范围内,被称为对的第一部分。

代理对的第二个代码单元始终在0xDC00到0xDFFF的范围内,被称为该对的底部。

马蒂亚斯·比恩斯(Matthias Binens)

代理对:一个抽象符号的表示形式,由两个16位代码单元的序列组成,其中该对的第一个值是顶部代理代码单元,第二个是较低代理代码单元。 代理对仅在UTF-16中使用。

Unicode 8.0第3.8章-替代

代理对的计算


UTF-16中的Unicode字符“堆屎”(U + 1F4A9)必须编码为一个代理对,即两个代理。 要将任何代码点转换为代理对,请使用此算法(在JavaScript中)。 请记住,我们使用十六进制表示法。

var High_Surrogate = function(Code_Point){ return Math.floor((Code_Point - 0x10000) / 0x400) + 0xD800 }; var Low_Surrogate = function(Code_Point){ return (Code_Point - 0x10000) % 0x400 + 0xDC00 }; // Reverses The Conversion var Code_Point = function(High_Surrogate, Low_Surrogate){ return (High_Surrogate - 0xD800) * 0x400 + Low_Surrogate - 0xDC00 + 0x10000; }; 



组成与分解


Unicode包含一种更改字符形状的机制,该机制大大扩展了支持的字形集。 这适用于可组合变音符号。 它们被插入到主角之后。 多个变音​​标记可以应用于同一标记。 Unicode还包含大多数此类组合的预编译版本,以供正常使用。

某些字符序列也可以表示为单个字符,称为预组合字符,也称为复合字符。 例如,可以将字符[ü]编码为唯一的代码点U + 00FC或基本字符U + 0075(u),然后再编码为非独立字符U + 0308(¨)。 Unicode标准对复合字符进行编码,以与既定标准兼容,例如Latin 1,其中包括许多复合字符,例如[ü]和[ñ]。

可以扩展复合字符以进行一致性或分析。 例如,当按字母顺序排序时,符号[ü]可以分解为[u],后跟非独立符号[¨]。 经过这样的分解,该算法更易于处理一系列字符。 这使得在字符修饰符不影响字母顺序的语言中更容易进行排序。 Unicode标准设置所有复合字符的分解顺序 。 它还定义了规范化形式以提供字符的唯一表示形式。

Unicode神话


摘自Mark Davis的幻灯片“ Unicode的神话”

  • Unicode只是16位代码 。 -有些人错误地认为Unicode只是一个16位代码,其中每个字符占用16位,因此有65,536个可能的字符。 实际上,这并非完全正确。 这是最常见的Unicode神话,因此如果您之前也这么认为,请不要气disc。
  • 您可以采用未满足您需求的任何代码点 。 -不 总有一天,这个地方会被另一个符号代替。 取而代之的是,将飞机用于私人用途,或者在每个飞机上没有字符的区域中,根据标准,这些字符将不包含字符。
  • 每个Unicode代码点代表一个字符 。 -不 有很多不带字符的点(FFFE,FFFF,1FFFE等),此外,还包括替代代码点,私有和未使用的代码点,以及控制/格式化“字符”(RLM,ZWNJ等)。
  • Unicode空间不足 。 -如果线性填充,它将在2140年结束。 但是该位置不是线性填充的。 将来的计划请看这里
  • 所有字符都一一对应 。 -不 选项包括:
    • 一对多:(β→SS)
    • 给定上下文:(...Σ←→...ς并同时...ΣΤ...←→...στ...)
    • 根据语言环境:(I←→ı,同时İ←→i)

Unicode应用程序编码


编码类型例子
HTML对象(十进制)
HTML对象(十六进制)
URL控制码%F0%9F%96%96
UTF-8(十六进制)0xF0 0x9F 0x96 0x96(f09f9696)
UTF-8(二进制)11110000:10011111:10010110:10010110
UTF-16 / UTF-16BE(十六进制)0xD83D 0xDD96(d83ddd96)
UTF-16LE(十六进制)0x3DD8 0x96DD(3dd896dd)
UTF-32 / UTF-32BE(十六进制)0x0001F596(0001f596)
UTF-32LE(十六进制)0x96F50100(96f50100)
八进制转义序列\ 360 \ 237 \ 226 \ 226

源代码


编码类型例子
Java脚本\ u1F596
杰森\ u1F596
ç\ u1F596
C ++\ u1F596
爪哇\ u1F596
巨蟒\ u1F596
佩尔\ x {1F596}
红宝石\ u {1F596}
的CSS\ 01F596

令人惊叹的角色列表。



从U + 202a到U + 202e的管理人员的安排越来越混乱,共享文档可以迅速将编辑变成书面说唱战

特殊字符


Unicode联盟已发布了通用标点图 ,您可以在其中找到更多信息。

记号职称内容描述
''U + FEFF零宽度的不间断空间(字节顺序标记-BOM)更改字节顺序时,它具有唯一性的重要属性。 它还具有零宽度和不可见性。 在不合适的软件(例如PHP解释器)中,这会导致各种有趣行为的示例。
'￯''\ uFFEF'反向BOM除文本开头外,不等于字符。
'​''\ u200B'零宽度的不间断空间除防止结扎外,无外观,无作用的符号。
' 'U + 00A0不间断空间使相邻字符粘在一起。 众所周知 在HTML中。
''U + 00AD软连字符在HTML中,它的工作方式类似于零宽度的空间,但是当遇到行尾时(仅在这种情况下)会显示连字符。
'‍'U + 200D零宽度符号(带并集)使相邻字符连接(例如,阿拉伯字符或受支持的表情符号)。 可用于顺序组合的表情符号。
'⁠'U + 2060字连接器与U + 00A0相同,但完全不可见。 适用于Twitter上的@ font-face。
' 'U + 1680 Ogham空格字符标记一个看起来像破折号的空间。 非常适合使程序员更接近疯狂:1 + 2 === 3。
';'U + 037E希腊问号看起来像分号。 也是吸引开发人员的一种有趣方式。
'‭'U + 202D从左到右更改文本的方向。
'‮'U + 202E从右到左更改文本的方向。
'ꓸ'U + A4F8 su字母音符加倍。
'ꓹ'U + A4F9 su字母音na po加倍逗号。
'ꓼ'U + A4FC Lisu字母音韵双分号。
'ꓽ'U + A4FD Lisu字母音mya jeu加倍冒号。
'︀'选项选择器 (从U + FE00到U + FE0F,从U + E0100到U + E01EF)具有ID_Continue属性的零宽度的256个字符的块,即可以在变量名(不是第一个字母)中使用。 使它们与众不同的是,鼠标光标经过它们,因为它们结合了字符,这与大多数其他零宽度字符不同。
'ᅟ'U + 115F占位符Hangul Choson本质上填补了空间。 渲染为零宽度字符(不可见),除非在渲染中明确支持。 标记为ID_Start
'ᅠ'U + 1160占位符Chunson也许充满空间? 渲染为零宽度字符(不可见),除非在渲染中明确支持。 标记为ID_Start
'ㅤ'U + 3164韩文聚合通常,它会填充空间。 渲染为零宽度字符(不可见),除非在渲染中明确支持。 标记为ID_Start

等等...我刚刚读了什么?

变量标识符可以包含空格!


U + 3164 Hangul占位符显示为宽空格。 如果在渲染中显然不支持该字符,则该字符将显示为完全不可见(并且不占用空间,即“零宽度”)。 这意味着您将永远不会看到丑陋的字符替换字符( )。

我还不确定为什么要指示U + 3164以这种方式运行。 有趣的是,U + 3164在1.1版(1993年)中添加到Unicode中-因此,联盟专家有很多时间来考虑它。 无论如何,这里有一些例子。

 > var ᅟ = 'foo'; undefined > ᅟ 'foo' > var ㅤ= alert; undefined > var foo = 'bar' undefined > if ( foo ===ㅤ`baz` ){} // alert undefined > var varㅤfooㅤ\u{A60C}ㅤπ = 'bar'; undefined > varㅤfooㅤꘌㅤπ 'bar' 

**注:**我在Ubuntu和OS X上使用以下参数测试了U + 3164渲染:`node`,`php`,`ruby`,`python3.5`,`scala`,`vim`,`cat` ,`chrome` +`github gist'。 Atom是唯一失败(错误地)显示空白字段的系统。 我尚未检查Emacs和Sublime中的代码。 据我了解,Unicode联盟不会重新分配或重命名字符或代码点,但是可以说服它更改字符的属性,例如ID_Start和ID_Continue。

修饰符


零宽度组合器(ZWJ)是计算机中某些复杂字体(例如阿拉伯语或任何印度字体)中的不可打印字符。 当ZWJ放置在否则无法连接的两个字符之间时,将强制它们以组合形式打印。

零宽度隔离器(ZWNJ)是带有连字的基于计算机的书写集中的不可打印字符。 当放置在两个本来要连字的字符之间时,ZWNJ会强制它们分别以最终形式和原始形式打印。 充当空格,但在需要使单词彼此靠近或将单词与其词素结合在一起时使用。

 > 'a' "a" > 'a\u{0308}' "ä" > 'a\u{20DE}\u{0308}' "a⃞̈" > 'a\u{20DE}\u{0308}\u{20DD}' "a⃞̈⃝" // Modifying Invisible Characters > '\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}' "‎‎‎‎‎‎‎‎‎‎" > '\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}'.length 10 

大写变换冲突


记号代码点结果
ß0x00DFSS
ı0x0131I
ſ0x017FS
0xFB00FF
科幻0xFB01FI
0xFB02FL
0xFB03FFI
0xFB04FFL
0xFB05ST
0xFB06ST

小写转换冲突


记号代码点结果
ķ0x212Ak

怪癖和故障排除


  • 线长通常由代码点数决定 。 这意味着代理对将被视为两个字符。 几个变音符号可以叠加在一个符号上: a + ̈ == ̈a 。 这增加了字符串的长度,仅产生一个字符。
  • 同样,字符串倒置通常成为一项不平凡的任务 。 同样,代理对和变音符号应一起反转。 ES Reverser提供了一个很好的解决方案。
  • 大写和小写比较并不总是匹配 。 它们可以用以下关系表示:

    • 一对多:(ß→SS)
    • 给定上下文:(...Σ←→...ς和...ΣΤ...←→...στ...)
    • 基于语言环境:(I←→ı和İ←→i)

    一对多比较


    下面的大多数字符以大写形式表示它们的一对多映射,以小写形式表示其他字符。 原则上,列表可以分为两部分。

    代码点记号职称相关角色关联代码点
    U + 00DFß拉丁小写护送(S急性)sU + 0073,U + 0073
    U + 0130İ拉丁大写字母“ I”上方带有点iU + 0069,U + 0307
    U + 0149ʼn前一个撇号的拉丁小写字母“ n”ʼU + 02BC,U + 006E
    U + 01F0ǰ拉丁小写字母jU + 006A,U + 030C
    U + 0390ΐ希腊小写的iota,带有透析和tonos。ϊU + 03B9,U + 0308,U + 0301
    U + 03B0ΰ希腊小写字母ipsilon,带有透析和tonos。ϋU + 03C5,U + 0308,U + 0301
    U + 0587և亚美尼亚小写字母ech yiwnեւU + 0565,U + 0582
    U + 1E96拉丁小写字母h在下面一行U + 0068,U + 0331
    U + 1E97带反渗透的拉丁小写字母tU + 0074,U + 0308
    U + 1E98带环的拉丁文小写字母wU + 0077,U + 030A
    U + 1E99带圆环的拉丁文小写字母yyU + 0079,U + 030A
    U + 1E9A拉丁小写字母a,右半边U + 0061,U + 02BE
    U + 1E9E拉丁大写字母AsU + 0073,U + 0073
    U + 1F50带有psil的希腊小写字母ipsilonU + 03C5,U + 0313
    U + 1F52希腊小写字母ipsilon与psili和variaὐU + 03C5,U + 0313,U + 0300
    U + 1F54希腊小写字母ipsilon与psily和oxyὐU + 03C5,U + 0313,U + 0301
    U + 1F56希腊小写字母ipsilon,带有psily和PerisomeὐU + 03C5,U + 0313,U + 0342
    U + 1F80希腊小写字母alpha与psili和ipogemenιU + 1F00,U + 03B9
    U + 1F81希腊小写字母alpha与dasia和ipogemenιU + 1F01,U + 03B9
    U + 1F82希腊小写字母alpha与psilia,varia和ipogemenιU + 1F02,U + 03B9
    U + 1F83希腊小写字母alpha与dasia和varia和ipogemenιU + 1F03,U + 03B9
    U + 1F84希腊小写字母alpha与psily和oxy和ipogemenιU + 1F04,U + 03B9
    U + 1F85希腊小写字母alpha与dasia和oxy和ipogemenιU + 1F05,U + 03B9
    U + 1F86希腊小写字母alpha,与psily,perospomenti和ipogemenιU + 1F06,U + 03B9
    U + 1F87希腊小写字母alpha与dasia,perospomenti和hypogrammenιU + 1F07,U + 03B9
    U + 1F88希腊大写字母alpha与psil和programmenιU + 1F00,U + 03B9
    U + 1F89希腊大写字母Alpha与Dasia和ProgrammenιU + 1F01,U + 03B9
    U + 1F8A希腊大写字母alpha与psilia和varia和程序ιU + 1F02,U + 03B9
    U + 1F8B希腊大写字母alpha与达西亚和瓦里亚和编ιU + 1F03,U + 03B9
    U + 1F8C希腊大写字母alpha与psily和oxy和progιU + 1F04,U + 03B9
    U + 1F8D希腊大写字母alpha与dasia和oxy和programmenιU + 1F05,U + 03B9
    U + 1F8E希腊大写字母alpha,与psily和perspomenti和programmenyιU + 1F06,U + 03B9
    U + 1F8F希腊大写字母Alpha与Dasia,Perospomenti和ProgsιU + 1F07,U + 03B9
    U + 1F90希腊小写字母,带psily和ipogemenιU + 1F20,U + 03B9
    U + 1F91希腊小写字母A,带有Dasia和ipogemenιU + 1F21,U + 03B9
    U + 1F92希腊小写字母,带有psilia,varia和ipogemenιU + 1F22,U + 03B9
    U + 1F93希腊小写字母eta带有大洋和varia和ipogemenιU + 1F23,U + 03B9
    U + 1F94希腊小写字母A,带有psilia和oksia和ipogemenιU + 1F24,U + 03B9
    U + 1F95希腊小写字母eta与大洋洲,oksia和ipogemenιU + 1F25,U + 03B9
    U + 1F96希腊文小写字母,包含psily,perospomenti和ipogemenιU + 1F26,U + 03B9
    U + 1F97希腊小写字母eta与dasia和perisopmenti和hypogrammenιU + 1F27,U + 03B9
    U + 1F98希腊大写字母,带psilah和programmsιU + 1F20,U + 03B9
    U + 1F99希腊大写字母与Dasia和程序员ιU + 1F21,U + 03B9
    U + 1F9A希腊大写字母,包括psilia,varia和prosgrammemenyιU + 1F22,U + 03B9
    U + 1F9B希腊大写字母,带有dasia,varia和prosgrammemenyιU + 1F23,U + 03B9
    U + 1F9C希腊大写字母与psilia和oxyιU + 1F24,U + 03B9
    U + 1F9D希腊大写字母与dasia和oksia及程序员ιU + 1F25,U + 03B9
    U + 1F9E希腊大写字母,带有psily和骨刺性和程序性ιU + 1F26,U + 03B9
    U + 1F9F希腊大写字母,包括“ dasia”,“ peripospomenti”和“ programmen”ιU + 1F27,U + 03B9
    U + 1FA0希腊小写字母欧米茄与psili和ipogemenιU + 1F60,U + 03B9
    U + 1FA1希腊小写字母欧米茄与dasia和ipogemenιU + 1F61,U + 03B9
    U + 1FA2希腊小写字母欧米茄与psilia,varia和ipogemenιU + 1F62,U + 03B9
    U + 1FA3希腊小写字母欧米茄,带有dasia和varia和ipogemenιU + 1F63,U + 03B9
    U + 1FA4希腊小写字母Ω与psily和oxy和ipogemenιU + 1F64,U + 03B9
    U + 1FA5希腊小写字母欧米茄,带有dasia和oxy和ipogemenιU + 1F65,U + 03B9
    U + 1FA6希腊小写字母Ω与psily,骨膜和ipogemenιU + 1F66,U + 03B9
    U + 1FA7希腊小写字母欧米茄,带有dasia和periposmenti和hypogrammemenιU + 1F67,U + 03B9
    U + 1FA8希腊大写字母omega与psili和程序ιU + 1F60,U + 03B9
    U + 1FA9希腊大写字母Omega与Dasia和ProgrammenιU + 1F61,U + 03B9
    U + 1FAA希腊大写字母omega带有psilia,varia和prosgrammemenyιU + 1F62,U + 03B9
    U + 1FAB希腊大写字母Omega,带有dasia和varia和programmenιU + 1F63,U + 03B9
    U + 1FAC希腊大写字母Ω与psilia和oxy和progamemenιU + 1F64,U + 03B9
    U + 1FAD希腊大写字母omega,带有大洋洲和oksia和programmenιU + 1F65,U + 03B9
    U + 1FAE希腊大写字母omega,带有psily,perospomenti和prosgrammemenyιU + 1F66,U + 03B9
    U + 1FAF希腊大写字母omega,带有dasia,perospomenti和prosgrammemenyιU + 1F67,U + 03B9
    U + 1FB2希腊小写字母alpha与varia和ipogemenιU + 1F70,U + 03B9
    U + 1FB3带ogogerammeni的希腊小写字母alphaU + 03B1,U + 03B9
    U + 1FB4希腊小写字母alpha与oxy和ipogemenάιU + 03AC,U + 03B9
    U + 1FB6希腊小写字母alpha与perospomentiU + 03B1,U + 0342
    U + 1FB7希腊小写字母alpha与perospomenti和ipogemenᾶ ιU + 03B1,U + 0342,U + 03B9
    U + 1FBC希腊大写字母alpha与编U + 03B1,U + 03B9
    U + 1FC2希腊小写字母et与varia和ipogemenιU + 1F74,U + 03B9
    U + 1FC3希腊小写字母a与ipogemenηU + 03B7,U + 03B9
    U + 1FC4希腊文小写字母eta与oxy和ipogemenU + 03AE,U + 03B9
    U + 1FC6希腊文小写字母a与大括号ηU + 03B7,U + 0342
    U + 1FC7希腊小写字母a,与perospomenti和ipogemenῆ ιU + 03B7,U + 0342,U + 03B9
    U + 1FCC希腊大写字母与编ηU + 03B7,U + 03B9
    U + 1FD2希腊小写字母iota带有透析和可变参数ϊU + 03B9,U + 0308,U + 0300
    U + 1FD3希腊小写的iota带有透析和氧气ϊU + 03B9,U + 0308,U + 0301
    U + 1FD6希腊小写的iota与骨膜U + 03B9,U + 0342
    U + 1FD7希腊小写字母iota具有透析和时期ϊU + 03B9,U + 0308,U + 0342
    U + 1FE2希腊小写字母ipsilon与透析和变异性。ϋU + 03C5,U + 0308,U + 0300
    U + 1FE3希腊小写字母ipsilon,带有透析和氧气。ϋU + 03C5,U + 0308,U + 0301
    U + 1FE4希腊小写rho与psiliU + 03C1,U + 0313
    U + 1FE6希腊小写字母ipsilon与骨膜υU + 03C5,U + 0342
    U + 1FE7希腊小写字母ipsilon,带有透析和句号ϋU + 03C5,U + 0308,U + 0342
    U + 1FF2希腊小写字母omega与varia和ipogemenιU + 1F7C,U + 03B9
    U + 1FF3带有ogogerammeni的希腊小写字母omegaωU + 03C9,U + 03B9
    U + 1FF4希腊小写字母欧米茄与oxia和ipogemenώιU + 03CE,U + 03B9
    U + 1FF6希腊小写字母欧米茄与perospomentiU + 03C9,U + 0342
    U + 1FF7希腊小写字母欧米茄,带有peripospomenti和ipogemenῶ ιU + 03C9,U + 0342,U + 03B9
    U + 1FFC希腊大写字母Omega计划ωU + 03C9,U + 03B9
    U + FB00拉丁小写连字FffU + 0066,U + 0066
    U + FB01拉丁小写连字FiiU + 0066,U + 0069
    U + FB02拉丁小写连字FllU + 0066,U + 006C
    U + FB03拉丁小写连字FfiU + 0066,U + 0066,U + 0069
    U + FB04拉丁小写连字FflfU + 0066,U + 0066,U + 006C
    U + FB05拉丁小写连字长STsU + 0073,U + 0074
    U + FB06拉丁小写连字StsU + 0073,U + 0074
    U + FB13亚美尼亚小写连字Men NowննU + 0574,U + 0576
    U + FB14亚美尼亚小写连字Men EchեեU + 0574,U + 0565
    U + FB15亚美尼亚小写连字Men IniիիU + 0574,U + 056B
    U + FB16亚美尼亚小写连字Vew NowննU + 057E,U + 0576
    U + FB17亚美尼亚小写连字Men XehխխU + 0574,U + 056D

    很棒的软件包和库



    表情符号




    Unicode (diversity), . .

    , , . — . :

    U+1F469 U+200D U+2764 U+FE0F U+200D U+1F469️‍️‍️‍couple with heart: woman, woman
    U+1F468 U+200D U+1F468 U+200D U+1F467 U+200D U+1F466

    , .

    8.0 ( 2015 ) - . , ( , FitzpatrickSkinType.pdf). .

    Unicode

    U+1F3FB-1-2
    U+1F3FC-3
    U+1F3FD-4
    U+1F3FE-5
    U+1F3FF-6

    , \u{1F466}\u{1F3FE} .


    +






    JavaScript (ES6)

    , ID_START , . , ID_CONTINUE , .

     // How convenient! var π = Math.PI; // Sometimes, you just have to use the Bad Parts of JavaScript: var ಠ_ಠ = eval; // Code, YU NO WORK?! var ლ_ಠ益ಠ_ლ = 42; // How about a JavaScript library for functional programming? var λ = function() {}; // Obfuscate boring variable names for great justice var \u006C\u006F\u006C\u0077\u0061\u0074 = 'heh'; // …or just make up random ones var Ꙭൽↈⴱ = 'huh'; // While perfectly valid, this doesn't work in most browsers: var foo\u200Cbar = 42; // This is *not* a bitwise left shift (`<<`): var 〱〱 = 2; // This is, though: 〱〱 << 〱〱; // 8 // Give yourself a discount: var price_9̶9̶_89 = 'cheap'; // Fun with Roman numerals var Ⅳ = 4; var Ⅴ = 5; Ⅳ + Ⅴ; // 9 // Cthulhu was here var Hͫ̆̒̐ͣ̊̄ͯ͗͏̵̗̻̰̠̬͝ͅE̴̷̬͎̱̘͇͍̾ͦ͊͒͊̓̓̐_̫̠̱̩̭̤͈̑̎̋ͮͩ̒͑̾͋͘Ç̳͕̯̭̱̲̣̠̜͋̍O̴̦̗̯̹̼ͭ̐ͨ̊̈͘͠M̶̝̠̭̭̤̻͓͑̓̊ͣͤ̎͟͠E̢̞̮̹͍̞̳̣ͣͪ͐̈T̡̯̳̭̜̠͕͌̈́̽̿ͤ̿̅̑Ḧ̱̱̺̰̳̹̘̰́̏ͪ̂̽͂̀͠ = 'Zalgo'; 

    CSS .

     <!-- place this within the document head --> <meta charset="UTF-8" /> <!-- error message --> <div class="ಠ_ಠ">You do not have access to this page.</div> <!-- success message --> <div class="">Your changes have been saved successfully!</div> 

     .ಠ_ಠ { border: 1px solid #f00; } . { background: lightgreen; } 

    HTML


    HTML- , , .

    , HTML .

     // U+1160 HANGUL JUNGSEONG FILLER transformAllTags('ᅠ'); // An actual HTML element node designed to look like a comment node, using the U+01C3 LATIN LETTER RETROFLEX CLICK // <ǃ-- name="viewport" content="width=device-width"></ǃ--> transformAllTags('ǃ--'); // or even <ᅠ⃝ transformAllTags('\u{1160}\u{20dd}'); // and for a bonus, all existing tag names will have each character ensquared. h⃞t⃞m⃞l⃞ transformAllTags(); function transformAllTags (newName){ // querySelectorAll doesn't actually return an array. Array.from(document.querySelectorAll('*')) .forEach(function(x){ transformTag(x, newName); }); } function wonky(str){ return str.split('').join('\u{20de}') + '\u{20de}'; } function transformTag(tagIdOrElem, tagType){ var elem = (tagIdOrElem instanceof HTMLElement) ? tagIdOrElem : document.getElementById(tagIdOrElem); if(!elem || !(elem instanceof HTMLElement))return; var children = elem.childNodes; var parent = elem.parentNode; var newNode = document.createElement(tagType||wonky(elem.tagName)); for(var a=0;a<elem.attributes.length;a++){ newNode.setAttribute(elem.attributes[a].nodeName, elem.attributes[a].value); } for(var i= 0,clen=children.length;i<clen;i++){ newNode.appendChild(children[0]); //0...always point to the first non-moved element } newNode.style.cssText = elem.style.cssText; parent.replaceChild(newNode,elem); } 

    :

     function testBegin(str){ try{ eval(`document.createElement( '${str}' );`) return true; } catch(e){ return false; } } function testContinue(str){ try{ eval(`document.createElement( 'a${str}' );`) return true; } catch(e){ return false; } } 

    :

     // Test if dashes can start an HTML Tag > testBegin('-') < false > testContinue('-') < true > testBegin('ᅠ-') // Prepend dash with U+1160 HANGUL JUNGSEONG FILLER < true 


    TrueType OpenType UTF-8, 65 535 . 1,1 UTF-8, .








    256 .



    , () (CJK). , , « ».


    . 17- .

    #
    U+0000U+007F128
    — 1U+0080U+00FF128
    — AU+0100U+017F128
    — BU+0180U+024F208
    U+0250U+02AF96
    U+02B0U+02FF80
    U+0300U+036F112
    U+0370U+03FF135
    U+0400U+04FF256
    U+0500U+052F48
    U+0530U+058F89
    U+0590U+05FF87
    U+0600U+06FF255
    U+0700U+074F77
    U+0750U+077F48
    U+0780U+07BF50
    U+07C0U+07FF59
    U+0800U+083F61
    U+0840U+085F29
    — AU+08A0U+08FF50
    U+0900U+097F128
    U+0980U+09FF93
    U+0A00U+0A7F79
    U+0A80U+0AFF85
    U+0B00U+0B7F90
    U+0B80U+0BFF72
    U+0C00U+0C7F96
    U+0C80U+0CFF87
    U+0D00U+0D7F100
    U+0D80U+0DFF90
    U+0E00U+0E7F87
    U+0E80U+0EFF67
    U+0F00U+0FFF211
    U+1000U+109F160
    U+10A0U+10FF88
    U+1100U+11FF256
    U+1200U+137F358
    U+1380U+139F26
    U+13A0U+13FF92
    U+1400U+167F640
    U+1680U+169F29
    U+16A0U+16FF89
    U+1700U+171F20
    U+1720U+173F23
    U+1740U+175F20
    U+1760U+177F18岁
    U+1780U+17FF114
    U+1800U+18AF156
    U+18B0U+18FF70
    U+1900U+194F68
    U+1950U+197F35
    U+1980U+19DF83
    U+19E0U+19FF32
    U+1A00U+1A1F30
    U+1A20U+1AAF127
    U+1AB0U+1AFF15
    U+1B00U+1B7F121
    U+1B80U+1BBF64
    U+1BC0U+1BFF56
    U+1C00U+1C4F74
    -U+1C50U+1C7F48
    U+1CC0U+1CCF8
    U+1CD0U+1CFF41
    U+1D00U+1D7F128
    U+1D80U+1DBF64
    U+1DFFU+1DC0U+1DFF58
    U+1E00U+1EFF256
    U+1F00U+1FFF233
    U+2000U+206F111
    U+2070U+209F42
    U+20A0U+20CF31
    U+20D0U+20FF33
    U+2100U+214F80
    U+2150U+218F60
    U+2190U+21FF112
    U+2200U+22FF256
    U+2300U+23FF251
    U+2400U+243F39
    U+2440U+245F11
    U+2460U+24FF160
    U+2500U+257F128
    U+2580U+259F32
    U+25A0U+25FF96
    U+2600U+26FF256
    DingbatsU+2700U+27BF192
    — AU+27C0U+27EF48
    — AU+27F0U+27FF16
    U+2800U+28FF256
    — BU+2900U+297F128
    — BU+2980U+29FF128
    U+2A00U+2AFF256
    U+2B00U+2BFF206
    U+2C00U+2C5F94
    — CU+2C60U+2C7F32
    U+2C80U+2CFF123
    U+2D00U+2D2F40
    U+2D30U+2D7F59
    U+2D80U+2DDF79
    — AU+2DE0U+2DFF32
    U+2E00U+2E7F67
    U+2E80U+2EFF115
    U+2F00U+2FDF214
    U+2FF0U+2FFF12
    U+3000U+303F64
    U+3040U+309F93
    U+30A0U+30FF96
    U+3100U+312F41
    U+3130U+318F94
    U+3190U+319F16
    U+31A0U+31BF27
    U+31C0U+31EF36
    U+31F0U+31FF16
    U+3200U+32FF254
    U+3300U+33FF256
    — AU+3400U+4DBF6191
    « »U+4DC0U+4DFF64
    U+4E00U+9FFF20941
    U+A000U+A48F1165
    U+A490U+A4CF55
    U+A4D0U+A4FF48
    U+A500U+A63F300
    — BU+A640U+A69F96
    U+A6A0U+A6FF88
    U+A700U+A71F32
    — DU+A720U+A7FF159
    U+A800U+A82F44
    U+A830U+A83F10
    U+A840U+A87F56
    U+A880U+A8DF81
    U+A8E0U+A8FF30
    -U+A900U+A92F48
    U+A930U+A95F37
    — AU+A960U+A97F29
    U+A980U+A9DF91
    — BU+A9E0U+A9FF31
    U+AA00U+AA5F83
    — AU+AA60U+AA7F32
    -U+AA80U+AADF72
    U+AAE0U+AAFF23
    — AU+AB00U+AB2F32
    — EU+AB30U+AB6F54
    U+AB70U+ABBF80
    U+ABC0U+ABFF56
    U+AC00U+D7AF2
    — BU+D7B0U+D7FF72
    U+D800U+DB7F2
    U+DB80U+DBFF2
    U+DC00U+DFFF2
    U+E000U+F8FF2
    U+F900U+FAFF472
    U+FB00U+FB4F58
    — AU+FB50U+FDFF643
    U+FE00U+FE0F16
    U+FE10U+FE1F10
    U+FE20U+FE2F16
    U+FE30U+FE4F32
    U+FE50U+FE6F26
    — BU+FE70U+FEFF141
    U+FF00U+FFEF225
    U+FFF0U+FFFF7
    U+10000U+1007F88
    U+10080U+100FF123
    U+10100U+1013F57
    U+10140U+1018F77
    U+10190U+101CF13
    U+101D0U+101FF46
    U+10280U+1029F29
    U+102A0U+102DF49
    U+102E0U+102FF28
    U+10300U+1032F36
    U+10330U+1034F27
    U+10350U+1037F43
    U+10380U+1039F31
    U+103A0U+103DF50
    U+10400U+1044F80
    U+10450U+1047F48
    U+10480U+104AF40
    U+10500U+1052F40
    U+10530U+1056F53
    U+10600U+1077F341
    U+10800U+1083F55
    U+10840U+1085F31
    U+10860U+1087F32
    U+10880U+108AF40
    U+108E0U+108FF26
    U+10900U+1091F29
    U+10920U+1093F27
    U+10980U+1099F32
    U+109A0U+109FF90
    U+10A00U+10A5F65
    U+10A60U+10A7F32
    U+10A80U+10A9F32
    U+10AC0U+10AFF51
    U+10B00U+10B3F61
    U+10B40U+10B5F30
    U+10B60U+10B7F27
    U+10B80U+10BAF29
    U+10C00U+10C4F73
    U+10C80U+10CFF108
    U+10E60U+10E7F31
    U+11000U+1107F109
    U+11080U+110CF66
    -U+110D0U+110FF35
    U+11100U+1114F67
    U+11150U+1117F39
    U+11180U+111DF94
    U+111E0U+111FF20
    U+11200U+1124F61
    U+11280U+112AF38
    U+112B0U+112FF69
    U+11300U+1137F85
    U+11480U+114DF82
    U+11580U+115FF92
    U+11600U+1165F79
    U+11680U+116CF66
    U+11700U+1173F57
    -U+118A0U+118FF84
    U+11AC0U+11AFF57
    U+12000U+123FF922
    U+12400U+1247F116
    U+12480U+1254F196
    U+13000U+1342F1071
    U+14400U+1467F583
    U+16800U+16A3F569
    U+16A40U+16A6F43
    U+16AD0U+16AFF36
    U+16B00U+16B8F127
    U+16F00U+16F9F133
    U+1B000U+1B0FF2
    U+1BC00U+1BC9F143
    U+1BCA0U+1BCAF4
    U+1D000U+1D0FF246
    U+1D100U+1D1FF231
    U+1D200U+1D24F70
    « »U+1D300U+1D35F87
    U+1D360U+1D37F18岁
    U+1D400U+1D7FF996
    SignWritingU+1D800U+1DAAF672
    U+1E800U+1E8DF213
    U+1EE00U+1EEFF143
    U+1F000U+1F02F44
    U+1F030U+1F09F100
    U+1F0A0U+1F0FF82
    U+1F100U+1F1FF173
    U+1F200U+1F2FF57
    U+1F300U+1F5FF766
    U+1F600U+1F64F80
    U+1F650U+1F67F48
    U+1F680U+1F6FF98
    U+1F700U+1F77F116
    U+1F780U+1F7FF85
    — CU+1F800U+1F8FF148
    U+1F900U+1F9FF15
    — BU+20000U+2A6DF42676
    — CU+2A700U+2B73F60
    — DU+2B740U+2B81F27
    — EU+2B820U+2CEAF2
    U+2F800U+2FA1F542
    TagsU+E0000U+E007F97
    U+E0100U+E01EF240
    — AU+F0000U+FFFFF4
    — BU+100000U+10FFFF4


    :

    • — - .
    • — , .
    • — .
    • — , . .
    • , — , . , .
    • — , . , [Ä] [A] [¨].
    • — .
    • — , , . .
    • — , .
    • — .

    : c codepoints.net .


Source: https://habr.com/ru/post/zh-CN485148/


All Articles