Unicode

Awesome Unicode Awesome

>令人愉悦的Unicode花絮,软件包和资源的精选列表.

请阅读 contribution guidelines 在捐款之前. 关键Unicode术语在 glossary.

交叉发布到 Wisdom's Dev Blog



Foreword

Unicode很棒! 在使用Unicode之前,国际交流十分艰辛-每个人都在会冲突的ASCII上半部分(定义为代码页)中定义了单独的扩展字符集-试想一下,德语使用者正在与韩语使用者协调使用127个字符的编码页. 值得庆幸的是,Unicode标准开始流行并实现了统一通信. Unicode 8.0标准化了来自129多个脚本的120,000个字符-有些是现代的,有些是古老的,还有一些仍未解密. Unicode处理从左到右和从右到左的文本,结合标记,并包括各种文化,政治,宗教人物和表情符号. Unicode非常人性化-最终被低估了.


Quick Unicode Background

What Characters Does the Unicode Standard Include?

Unicode标准定义了当今所有主要语言中使用的字符代码. 文字包括欧洲字母文字,中东从右到左文字以及许多亚洲文字.

Unicode标准还包括标点符号,变音符号,数学符号,技术符号,箭头,装饰符号,表情符号等.它提供变音符号的代码,它们修改了诸如代号(〜)之类的字符标记,并与基数结合使用代表重音字母的字符(例如,ñ). 总而言之,Unicode标准9.0版为来自世界各地的字母,表意符号集和符号集合的128,172个字符提供了代码.

大多数常用字符都适合前64K代码点,这是代码空间的一个区域,称为基本多语言平面,简称BMP. 还有其他十六种补充平面可用于编码其他字符,目前有超过850,000个未使用的代码点. 考虑在将来的标准版本中添加更多字符.

Unicode标准还保留供个人使用的代码点. 供应商或最终用户可以在内部为自己的字符和符号分配这些字符,或将它们与专用字体一起使用. BMP上有6,400个专用代码点,另外131,068个补充专用代码点,如果6,400个不足以用于特定应用.

Unicode Character Encodings

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

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

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

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

UTF-32在不需要内存空间的情况下很有用,但需要固定宽度的单个代码单元访问字符. 使用UTF-32时,每个Unicode字符都以单个32位代码单元编码.

所有三种编码形式每个字符最多需要4个字节(或32位)的数据.

Lets talk Numbers

The Unicode characterset is divided into 17 core segments called "planes", which are further divided into blocks. Each plane has space for 65,536 (2¹⁶) codepoints, supporting a grand total of 1,114,112 codepoints. There are two "Private Use Area" planes (#16 & #17) that are allocated to be used however one wishes. These two Private Use planes account for 131,072 codepoints.

# Name Range
1. 基本多语种飞机 (U + 0000到U + FFFF)
2. 补充多语种飞机 (U + 10000至U + 1FFFF)
3. Supplementary Ideographic Plane (U+20000 to U+2FFFF)
4. 三次表意平面 (U + 30000至U + 3FFFF)
5. 飞机5(未分配) (U + 40000至U + 4FFFF)
6. 飞机6(未分配) (U + 50000至U + 5FFFF)
7. 飞机7(未分配) (U + 60000至U + 6FFFF)
8. 飞机8(未分配) (U + 70000至U + 7FFFF)
9. 飞机9(未分配) (U + 80000至U + 8FFFF)
10. 飞机10(未分配) (U + 90000至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 Surrogate Pairs

> BMP之外的字符(例如,用于中心()的U + 1D306四字组)只能使用两个16位代码单元(0xD834 0xDF06)以UTF-16编码. 这称为代理对. 请注意,代理对仅代表一个字符. 代理对的第一个代码单元始终在0xD800到0xDBFF的范围内,被称为高代理或超前代理. 代理对的第二个代码单元始终在0xDC00到0xDFFF的范围内,称为低代理或尾部代理.

-- Mathias Bynens

>代理对:单个抽象字符的表示,包括 两个16位代码单元的序列,其中该对的第一个值为高代理 代码单位,第二个值是低代理代码单位. 代理对仅在UTF-16中使用. (请参见第3.9节,Unicode编码 形式.) - Unicode 8.0.0 Chapter 3 - Surrogates

Calculating Surrogate Pairs

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

 var High_Surrogate = functionCode_Point{return Math.floor((Code_Point-0x10000/ 0x400+ 0xD800};
 var Low_Surrogate = functionCode_Point{returnCode_Point-0x10000)%0x400 + 0xDC00};

 //反转转换
 var Code_Point = functionHigh_SurrogateLow_Surrogate{
    returnHigh_Surrogate-0xD800* 0x400 + Low_Surrogate-0xDC00 + 0x10000;
 };
  > var codepoint = 0x1F4A9;  // 0x1F4A9 == 128169
 > High_Surrogate代码点.toString16
  d83d // 0xD83D == 55357
 > Low_Surrogate代码点.toString16
  dca9 // 0xDCA9 == 56489

 > String.fromCharCodeHigh_Surrogatecodepoint),Low_Surrogatecodepoint));
  ""
> String.fromCodePoint0x1F4A9
  ""
 >'\ ud83d \ udca9'
  ""

Composing & Decomposing

Unicode包含一种用于修改字符形状的机制,该机制极大地扩展了支持的字形库. 这涵盖了组合变音标记的使用. 它们被插入到主角之后. 多个组合变音符号可以堆叠在同一字符上. Unicode还包含通常使用的大多数字母/音位符号组合的预组合版本.

某些字符序列也可以表示为单个字符,称为预组合字符(或复合或可分解字符). 例如,字符“ü”可以被编码为单个代码点U + 00FC“ü”,或者被编码为基本字符U + 0075“ u”,后跟非空格字符U + 0308“¨”. Unicode标准对预组合字符进行编码,以与既定标准(例如Latin 1)兼容,该标准包括许多预组合字符,例如“ü”和“ñ”.

预先分解的字符可能会被分解以保持一致性或进行分析. 例如,在按字母顺序排列(排序)名称列表时,字符“ü”可以分解为“ u”,后跟非空格字符“¨”. 字符分解后,归类可以更轻松地与字符一起使用,因为可以将其修改为“ u”. 对于字符修饰符不影响字母顺序的语言,这可使语言更容易按字母排序. Unicode标准定义了 decompositions 用于所有预组合的字符. 它还定义了规范化形式以提供字符的唯一表示形式.

Myths of Unicode

摘自Mark Davis Unicode Myths 幻灯片. - Unicode仅是16位代码-有些人误以为Unicode只是16位代码,其中每个字符占用16位,因此可能有65,536个字符. 实际上,这是不正确的. 这是关于Unicode的最普遍的神话,因此,如果您这样认为,请不要感到难过.

-您可以将任何未分​​配的代码点用于内部使用-不能.最终,该孔将填充一个不同的字符. 而是使用私人用途或非字符.

-每个Unicode代码点都代表一个字符-不.有很多非字符(FFFE,FFFF,1FFFE等) 还存在代理代码点,专用和未分配的代码点以及控制/格式“字符”(RLM,ZWNJ等).

- Unicode将用尽空间-如果是线性的,则在公元2140年将用完. 但这不是线性的. 参见http://www.unicode.org/roadmaps/

-案例映射是1-1 -否.它们也可以是: -一对多:(ß→SS) -内容相关:(…↔…f AND…F…↔…f…) -区分区域设置:(Iı和ANDİi)

Applied Unicode Encodings

| 编码类型 原始编码| |---------------------------|---------------------------------------| |HTML Entity (Decimal) | 🖖 | |HTML Entity (Hexadecimal) | 🖖 | | 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 |

Source Code

编码类型 原始编码
JavaScript u1F596
JSON u1F596
C u1F596
C ++ u1F596
Java u1F596
Python u1F596
Perl x {1F596}
红宝石 u {1F596}
CSS 01F596

Awesome Characters List

Special Characters

Unicode联盟发布了 general punctuation chart 您可以在其中找到更多详细信息.

| 字符 姓名| 描述 |----------|------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ''| U + FEFF(字节顺序标记-BOM)| 具有字节重排明确性的重要属性. 它也是零宽度,并且是不可见的. 在非兼容软件(例如PHP解释器)中,这会导致各种有趣的行为. | | '￯'| '\ uFFEF'反转字节顺序标记(BOM)| 除了文字开头以外,不等于合法字符. | | '``| '\\ u200B'零宽度不间断空格| (除了防止形成连字外,没有外观和作用的字符). | |''| | U + 00A0 NO-BREAK SPACE | 强制相邻字符粘在一起. 在HTML中众所周知为`. | |''| U + 00AD SOFT HYPHEN | (在HTML中:)类似于零宽度空间,但在(且仅当)出现中断时显示连字符. | | ''‍' | U + 200D零宽度连接器| 强制将相邻字符(例如,阿拉伯字符或支持的表情符号)连接在一起. 可以用来组成顺序组合的表情符号. | | '⁠'| U + 2060 WORD JOINER | 与U + 00A0相同,但完全不可见. 非常适合在Twitter上编写@ font-face. | | ''| | U + 1680 OGHAM SPACE MARK | 一个看起来像破折号的空间. 伟大的使程序员接近疯狂:1 + 2 === 3. |';'| U + 037E希腊问号| 类似于分号. 这也是使开发人员恼火的一种有趣方式. | |'‭'| U + 202D | 将文本方向更改为从左到右. | |'‮'‭‭| U + 202E | 将文本方向更改为从右到左: |'ꓸ'| U + A4F8 LISU字母音MYA TI |看起来很像句点字符. | |'ꓹ'| | U + A4F9 LISU字母音NA PO |类似逗号的字符. |'ꓼ'| | U + A4FC LISU字母音MYA NA |类似于分号字符. |'ꓽ'| U + A4FD LISU字母音MYA JEU |类似冒号. |'︀'| **变量选择器**(U + FE00至U + FE0F和U + E0100至U + E01EF)| 256个零宽度字符的块,构成ID_Continue属性-意味着可以在变量名(不是第一个字母)中使用它们. 这些与众不同的原因是,鼠标光标在合并字符时会经过它们-与大多数其他零宽度字符不同. |'ᅟ'| ** U + 115F HANGUL CHOSEONG FILLER ** | 通常,它会产生一个空间. 如果渲染中未明确支持,则渲染为零宽度(不可见). 指定的ID_Start | |'ᅠ'| ** U + 1160 HANGUL JUNGSEONG FILLER ** | 也许它会产生一个空间? 如果渲染中未明确支持,则渲染为零宽度(不可见). 指定的ID_Start | |'ㅤ'`| U + 3164 HANGUL FILLER | 通常,它会产生一个空间. 如果渲染中未明确支持,则渲染为零宽度(不可见). 指定ID_Start |

Wait a second... what did I just read?



Variable identifiers can effectively include whitespace!

U + 3164 HANGUL FILLER 字符显示为前进的空格字符. 如果未明确显示,则该字符将呈现为完全不可见(并且不前进,即“零宽度”) supported in rendering . 这意味着绝不应该显示丑陋的字符替换(.)符号.

我尚不确定为什么要指定U + 3164表现为这种方式. 有趣的是,U + 3164是在1.1版(1993)中添加到Unicode的,因此该联盟必须有很多时间来考虑它. 无论如何,这里有一些例子.

> varᅟ='foo';
undefined
>
'foo'


> varㅤ=警告
undefined
> var foo ='bar'
undefined
> iffoo ===`baz`{} //提醒
undefined


> var varㅤfooㅤ\ u {A60C}π='bar';
undefined
> varㅤfooㅤㅤπ
'bar'

注意:我已经在Ubuntu和OS X上使用以下命令测试了U + 3164渲染:nodephprubypython3.5scalavimcatchrome +github gist. Atom是唯一由于(错误地)显示空框而失败的系统. 我尚未在Emacs和Sublime上进行测试. 据我了解,Unicode联盟不会重新分配或重命名字符或代码点,但可能会说服他们更改ID_Start / ID_Continue之类的字符属性.


Modifiers

零宽度连接符(ZWJ)是一种非打印字符,用于某些复杂脚本(如阿拉伯语脚本或任何印度语脚本)的计算机排版中. 当放置在两个否则不会连接的字符之间时,ZWJ会使它们以其连接的形式打印.

零宽度非连接符(ZWNJ)是在使用连字的书写系统的计算机化中使用的非打印字符. 当放在两个本来要连字的字符之间时,ZWNJ会使它们分别以最终形式和初始形式打印. 这也是空格字符的效果,但是当需要将单词保持在一起或将单词与其词素联系在一起时,可以使用ZWNJ.

>一个
 一种

>'a \ u {0308}'
 A

>'a \ u {20DE} \ u {0308}'
 “⃞̈”

>'a \ u {20DE} \ u {0308} \ u {20DD}'
 “⃞̈⃝”

//修改不可见字符
>'\ 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

:collision: Uppercase Transformation Collisions

| 字符 代码点| 输出字符| |------|------------|-------------| | ß| 0x00DF | SS | | ı| 0x0131 | 我 | ſ | 0x017F | S | | ff | 0xFB00 | FF | | | | 0xFB01 | FI | | 在| 0xFB02 | FL | | ffi | 0xFB03 | FFI | | ffl | 0xFB04 | FFL | | ſt | 0xFB05 | ST | | st | 0xFB06 | ST |

:collision: Lowercase Transformation Collisions

| 字符 代码点| 输出字符| |------|------------|-------------| | K | 0x212A | k |

Quirks and Troubleshooting

-字符串长度通常是通过计算代码点来确定的.这意味着代理对将被视为两个字符. 多个变音​​符号的组合可以堆叠在同一字符上. a +̈==̈a,增加了长度,而只产生一个字符.

-简单地说,颠倒琴弦通常是一项不平凡的任务.同样,代理对和变音符号必须一起颠倒. ES Reverser 提供了一个很好的解决方案.

-大小写映射并不总是一对一的.它们也可以是: -一对多:(ß→SS) -内容相关:(…↔…f AND…F…↔…f…) -区分区域设置:(Iı和ANDİi)

One-To-Many Case Mappings

以下大多数字符在大写时表示一对多的大小写映射,而其他字符应小写. 此列表应拆分

| 代码点| 性格 姓名| 映射字符| 映射的代码点| |-------------------------------------------------|-----------|--------------------------------------------------------------------------|------------------|------------------------| | U+00DF | ß| 拉丁文小写SHARP S | ss | U + 0073,U + 0073 | | U+0130 | İ| 上面带点的拉丁文大写字母I | i̇| U + 0069,U + 0307 | | U+0149 | ʼn| 带撇号的拉丁文小写字母N | ʼn | U + 02BC,U + 006E | | U+01F0 | ǰ| 带纸的拉丁文小写字母J | ǰ| U + 006A,U + 030C | | U+0390 | ΐ| 带有DIALYTIKA和TONOS的希腊小写字母IOTA | ΐ | U + 03B9,U + 0308,U + 0301 | | U+03B0 | ΰ| 希腊小写字母UPSILON与DIALYTIKA和TONOS | ΰ | U + 03C5,U + 0308,U + 0301 | | U+0587 |: |: 亚美尼亚小法律义乌|: e``: U + 0565,U + 0582 |: | [U+1E96](https://codepoints.net/U+1E96?lang=en) || 带有小写字母的拉丁文小写字母H |ẖ| U + 0068,U + 0331 | | [U+1E97](https://codepoints.net/U+1E97?lang=en) || 带有拉丁字母的拉丁文小写字母T |ẗ| U + 0074,U + 0308 | | [U+1E98](https://codepoints.net/U+1E98?lang=en) || 带环的拉丁文小写字母W |w¿ U + 0077,U + 030A | | U+1E99 | | 带环的拉丁文小写字母Y | y¿| U + 0079,U + 030A | | U+1E9A | | 右半环的拉丁文小写字母A | aʾ | U + 0061,U + 02BE | | U+1E9E | | 拉丁文大写字母S | ss | U + 0073,U + 0073 | | U+1F50 | | 希腊小写字母UPSILON与PSILI | Pinkoi ὐ| U + 03C5,U + 0313 | | U+1F52 | | 希腊小写字母UPSILON带PSILI和VARIA | ὒ | U + 03C5,U + 0313,U + 0300 | | U+1F54 | | 希腊小写字母UPSILON与PSILI和OXIA | ὔ | U + 03C5,U + 0313,U + 0301 | | U+1F56 | | 希腊小写字母UPSILON与PSILI和PERISPOMENI | ὖ | U + 03C5,U + 0313,U + 0342 | | U+1F80 | | 希腊小写字母Alpha字母和YPOGEGRAMMENI | ἀ,我 U + 1F00,U + 03B9 | | U+1F81 | | 希腊小写字母Alpha与DASIA和YPOGEGRAMMENI | ι| U + 1F01,U + 03B9 | | U+1F82 | | GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI | , ι | U+1F02, U+03B9 | | U+1F83 | | 希腊小写字母Alpha,带有DASIA和VARIA和YPOGEGRAMMENI | ι| U + 1F03,U + 03B9 | | U+1F84 | | 希腊小写字母Alpha与PSILI和OXIA和YPOGEGRAMMENI | ἄ,我 U + 1F04,U + 03B9 | | U+1F85 | | 希腊小写字母Alpha与DASIA和OXIA和YPOGEGRAMMENI | ι| U + 1F05,U + 03B9 | | U+1F86 | | 希腊小写字母Alpha,带有PSILI,PERISPOMENI和YPOGEGRAMMENI | ,ʻι| U + 1F06,U + 03B9 | | [U+1F87](https://codepoints.net/U+1F87?lang=en) || 希腊小写字母Alpha,带有DASIA,PERISPOMENI和YPOGEGRAMMENI |ι| U + 1F07,U + 03B9 | | [U+1F88](https://codepoints.net/U+1F88?lang=en) || 希腊字母大写字母PSILI和PROSGEGRAMMENI | ἀ,我 U + 1F00,U + 03B9 | | [U+1F89](https://codepoints.net/U+1F89?lang=en) || 希腊字母大写字母DASIA和PROSGEGRAMMENI |ι| U + 1F01,U + 03B9 | | [U+1F8A](https://codepoints.net/U+1F8A?lang=en) || 希腊字母大写字母PSILI,VARIA和PROSGEGRAMMENI |ι| U + 1F02,U + 03B9 | | [U+1F8B](https://codepoints.net/U+1F8B?lang=en) || 希腊大写字母Alpha与DASIA和VARIA和PROSGEGRAMMENI |ι| U + 1F03,U + 03B9 | | [U+1F8C](https://codepoints.net/U+1F8C?lang=en) || 希腊字母大写字母PSILI和OXIA和PROSGEGRAMMENI | ἄ,我 U + 1F04,U + 03B9 | | [U+1F8D](https://codepoints.net/U+1F8D?lang=en) || 希腊字母大写字母DASIA和OXIA与PROSGEGRAMMENI | ἅ,我 U + 1F05,U + 03B9 | | [U+1F8E](https://codepoints.net/U+1F8E?lang=en) || 希腊字母大写字母PSIL,PERISPOMENI和PROSGEGRAMMENI |,ʻι | U + 1F06,U + 03B9 | | U+1F8F | | 希腊大写字母Alpha与DASIA,PERISPOMENI和PROSGEGRAMMENI | ι| U + 1F07,U + 03B9 | | U+1F90 | | 带有PSILI和YPOGEGRAMMENI的希腊小写字母ETA | Pinkoi ἠ,我 U + 1F20,U + 03B9 | | U+1F91 | | 希腊小写字母ETA,带有DASIA和YPOGEGRAMMENI | ἡ,我 U + 1F21,U + 03B9 | | U+1F92 | | 希腊小写字母ETA,包含PSILI和VARIA和YPOGEGRAMMENI | ἢ,我 U + 1F22,U + 03B9 | | U+1F93 | | 希腊小写字母ETA,包含DASIA和VARIA和YPOGEGRAMMENI | ι| U + 1F23,U + 03B9 | | U+1F94 | | 希腊小写字母ETA,带有PSILI和OXIA和YPOGEGRAMMENI | ἤ,我 U + 1F24,U + 03B9 | | U+1F95 | | 希腊小写字母ETA,带有DASIA和OXIA和YPOGEGRAMMENI | ἥ,我 U + 1F25,U + 03B9 | | U+1F96 | | 希腊小写字母ETA,带有PSILI,PERISPOMENI和YPOGEGRAMMENI | ἦ,我 U + 1F26,U + 03B9 | | U+1F97 | | 希腊小写字母ETA,带有DASIA,PERISPOMENI和YPOGEGRAMMENI | ἧ,我 U + 1F27,U + 03B9 | | U+1F98 | | 希腊字母大写的ETA,带有PSILI和PROSGEGRAMMENI | ἠ,我 U + 1F20,U + 03B9 | | U+1F99 | | 希腊大写字母ETA,带有DASIA和PROSGEGRAMMENI | ἡ,我 U + 1F21,U + 03B9 | | U+1F9A | | 希腊首都大写字母ETA,带有PSILI和VARIA和PROSGEGRAMMENI | ἢ,我 U + 1F22,U + 03B9 | | U+1F9B | | 希腊大写字母ETA,包含DASIA和VARIA和PROSGEGRAMMENI | ι| U + 1F23,U + 03B9 | | U+1F9C | | 希腊字母大写字母ETA,带有PSILI和OXIA和PROSGEGRAMMENI | ἤ,我 U + 1F24,U + 03B9 | | U+1F9D | | 希腊大写字母ETA,带有DASIA和OXIA和PROSGEGRAMMENI | ἥ,我 U + 1F25,U + 03B9 | | U+1F9E | | 希腊字母大写的ETA,带有PSILI和PERISPOMENI和PROSGEGRAMMENI | ἦ,我 U + 1F26,U + 03B9 | | U+1F9F | | 希腊大写字母ETA,包含DASIA,PERISPOMENI和PROSGEGRAMMENI | ἧ,我 U + 1F27,U + 03B9 | | U+1FA0 | | 希腊小写字母欧米茄配PSILI和YPOGEGRAMMENI | ὠ,我 U + 1F60,U + 03B9 | | U+1FA1 | | 希腊小写字母欧米茄,配以DASIA和YPOGEGRAMMENI | ὡ,我 U + 1F61,U + 03B9 | | U+1FA2 | | 希腊小写字母欧米茄,带有PSILI和VARIA和YPOGEGRAMMENI | ι| U + 1F62,U + 03B9 | | U+1FA3 | | 希腊小写字母欧米茄,带有DASIA和VARIA和YPOGEGRAMMENI | ι| U + 1F63,U + 03B9 | | U+1FA4 | | 希腊小写字母欧米茄配PSILI和OXIA和YPOGEGRAMMENI | ὤ,我 U + 1F64,U + 03B9 | | U+1FA5 | | 希腊小写字母欧米茄,含DASIA和OXIA和YPOGEGRAMMENI | ι| U + 1F65,U + 03B9 | | U+1FA6 | | 希腊小写字母欧米茄配PSILI,PERISPOMENI和YPOGEGRAMMENI | ι| U + 1F66,U + 03B9 | | U+1FA7 | | 希腊小写字母欧米茄,配以DASIA,PERISPOMENI和YPOGEGRAMMENI | ι| U + 1F67,U + 03B9 | | U+1FA8 | | 希腊字母大写字母PSILI和PROSGEGRAMMENI | ὠ,我 U + 1F60,U + 03B9 | | U+1FA9 | | 希腊大写字母OMEGA,配以达斯和PROSGEGRAMMENI | ὡ,我 U + 1F61,U + 03B9 | | U+1FAA | | 希腊字母大写的欧米茄,带有PSILI和VARIA和PROSGEGRAMMENI | ὢ,我 U + 1F62,U + 03B9 | | U+1FAB | | 希腊大写字母欧米茄,带大亚西亚和VARIA和PROSGEGRAMMENI | ι| U + 1F63,U + 03B9 | | U+1FAC | | 希腊字母大写的欧米茄,带有PSILI和OXIA和PROSGEGRAMMENI | ὤ,我 U + 1F64,U + 03B9 | | U+1FAD | | 希腊大写字母OMEGA,带DASIA和OXIA和PROSGEGRAMMENI | ὥ,我 U + 1F65,U + 03B9 | | U+1FAE | | 希腊字母大写字母PSILI和PERISPOMENI和PROSGEGRAMMENI | ὦ,我 U + 1F66,U + 03B9 | | U+1FAF | | 希腊大写字母OMEGA,配以DASIA,PERISPOMENIA和PROSGEGRAMMENI | ,ʻι| U + 1F67,U + 03B9 | | [U+1FB2](https://codepoints.net/U+1FB2?lang=en) || 希腊小写字母阿尔法与静脉曲张和YPOGEGRAMMENI | Pinkoiι| U + 1F70,U + 03B9 | | [U+1FB3](https://codepoints.net/U+1FB3?lang=en) || 希腊小写字母阿尔法与YPOGEGRAMMENI |aU + 03B1,U + 03B9 | | [U+1FB4](https://codepoints.net/U+1FB4?lang=en) || 希腊小写字母Alpha与OXIA和YPOGEGRAMMENI |dU + 03AC,U + 03B9 | | [U+1FB6](https://codepoints.net/U+1FB6?lang=en) || 希腊小写字母Alpha与PERISPOMENI |ᾶ| U + 03B1,U + 0342 | | [U+1FB7](https://codepoints.net/U+1FB7?lang=en) || 希腊小写字母Alpha配佩罗波斯尼和YPOGEGRAMMENI |a͂iU + 03B1,U + 0342,U + 03B9 | | [U+1FBC](https://codepoints.net/U+1FBC?lang=en) || 希腊字母大写字母PROSGEGRAMMENI |aU + 03B1,U + 03B9 | | [U+1FC2](https://codepoints.net/U+1FC2?lang=en) || VARIA和YPOGEGRAMMENI的希腊小写字母ETA | Pinkoi| U + 1F74,U + 03B9 | | [U+1FC3](https://codepoints.net/U+1FC3?lang=en) || 带有EPOGEGRAMMENI的希腊小写字母ETA | PinkoinU + 03B7,U + 03B9 | | [U+1FC4](https://codepoints.net/U+1FC4?lang=en) || 希腊小写字母ETA,带有OXIA和YPOGEGRAMMENI | 或我 U + 03AE,U + 03B9 | | [U+1FC6](https://codepoints.net/U+1FC6?lang=en) || 带有PERISPOMENI的希腊小写字母ETA |ῆ| U + 03B7,U + 0342 | | [U+1FC7](https://codepoints.net/U+1FC7?lang=en) || 希腊小写字母ETA,带有佩罗波西莫尼和YPOGEGRAMMENI |n͂iU + 03B7,U + 0342,U + 03B9 | | [U+1FCC](https://codepoints.net/U+1FCC?lang=en) || 带有PROSGEGRAMMENI的希腊大写字母ETA |nU + 03B7,U + 03B9 | | [U+1FD2](https://codepoints.net/U+1FD2?lang=en) || 希腊小写字母IOTA,带有DIALYTIKA和VARIA |ῒ| U + 03B9,U + 0308,U + 0300 | | [U+1FD3](https://codepoints.net/U+1FD3?lang=en) |ΐ| 希腊小写字母IOTA,带有透析和氧化作用|j̈́| U + 03B9,U + 0308,U + 0301 | | [U+1FD6](https://codepoints.net/U+1FD6?lang=en) || 希腊小写字母IOTA搭配PERISPOMENI |ʻ͂| U + 03B9,U + 0342 | | [U+1FD7](https://codepoints.net/U+1FD7?lang=en) || 希腊小写字母IOTA,带有分析符和PERISPOMENI |ῗ| U + 03B9,U + 0308,U + 0342 | | [U+1FE2](https://codepoints.net/U+1FE2?lang=en) || 希腊小写字母UPSILON与DIALYTIKA和VARIA |ῢ| U + 03C5,U + 0308,U + 0300 | | [U+1FE3](https://codepoints.net/U+1FE3?lang=en) |ΰ| 希腊小写字母UPSILON与DIALYTIKA和OXIA |ΰ| U + 03C5,U + 0308,U + 0301 | | [U+1FE4](https://codepoints.net/U+1FE4?lang=en) || 希腊小写字母RHO with Psili | Pinkoiῤ| U + 03C1,U + 0313 | | [U+1FE6](https://codepoints.net/U+1FE6?lang=en) || 希腊小写字母UPSILON带PERISPOMENI |ῦ| U + 03C5,U + 0342 | | [U+1FE7](https://codepoints.net/U+1FE7?lang=en) || 希腊小写字母UPSILION与透析和PERISPOMENI |ῧ| U + 03C5,U + 0308,U + 0342 | | [U+1FF2](https://codepoints.net/U+1FF2?lang=en) || 希腊小写字母欧米茄配VARIA和YPOGEGRAMMENI |ι| U + 1F7C,U + 03B9 | | [U+1FF3](https://codepoints.net/U+1FF3?lang=en) || 希腊小写字母欧米茄配YPOGEGRAMMENI | Pinkoi 哦,我 U + 03C9,U + 03B9 | | [U+1FF4](https://codepoints.net/U+1FF4?lang=en) || 希腊小写字母欧米茄配OXIA和YPOGEGRAMMENI | 哦,我 U + 03CE,U + 03B9 | | [U+1FF6](https://codepoints.net/U+1FF6?lang=en) || 希腊小写字母OMEGA配PERISPOMENI |ῶ| U + 03C9,U + 0342 | | [U+1FF7](https://codepoints.net/U+1FF7?lang=en) || 希腊小写字母欧米茄,配以佩罗波斯尼和亚美尼亚|͂i| U + 03C9,U + 0342,U + 03B9 | | [U+1FFC](https://codepoints.net/U+1FFC?lang=en) || 带有PROSGEGRAMMENI的希腊大写字母OMEGA | 哦,我 U + 03C9,U + 03B9 | | [U+FB00](https://codepoints.net/U+FB00?lang=en) || 拉丁文小码FF |ff| U + 0066,U + 0066 | | [U+FB01](https://codepoints.net/U+FB01?lang=en) |Fi| 小LATIN结扎|Vereinigungsbedingte,| IC资料| U + 0066 U + 0069 | | [U+FB02](https://codepoints.net/U+FB02?lang=en) |Fl| 小LATIN结扎|Vereinigungsbedingte,l | U + 0066 U + 006C | | U+FB03 | Ffi | 拉丁小结扎线FFI | Vereinigungsbedingte,vereinigungsbedingte,| IC资料| U + 0066 U + 0066 U + 0069 | | [U+FB04](https://codepoints.net/U+FB04?lang=en) |Ffl| 拉丁小结扎线FFL |Vereinigungsbedingte,vereinigungsbedingte,l| U + 0066 U + 0066 U + 006C | | [U+FB05](https://codepoints.net/U+FB05?lang=en) || 长街拉丁小帆船|st| U + 0073,U + 0074 | | [U+FB06](https://codepoints.net/U+FB06?lang=en) || 拉丁文小法ST |st| U + 0073,U + 0074 | | [U+FB13](https://codepoints.net/U+FB13?lang=en) |:||: 亚美尼亚小男子现在|:mn| U + 0574,U + 0576 |: | [U+FB14](https://codepoints.net/U+FB14?lang=en) |:||: 亚美尼亚小男子门|:me|: U + 0574,U + 0565 |: | [U+FB15](https://codepoints.net/U+FB15?lang=en) || ARMENIAN SMALL LIGATURE MEN INI |մ,ի| U+0574, U+056B | | [U+FB16](https://codepoints.net/U+FB16?lang=en) |:||: 亚美尼亚小韧带VEW现在|:sn| U + 057E,U + 0576 |: | [U+FB17](https://codepoints.net/U+FB17?lang=en) |:||: 亚美尼亚小领带MEN XEH |:mk` | U + 0574,U + 056D |:

Awesome Packages & Libraries

  • PhantomScript -:ghost::flashlight:不可见的JavaScript代码执行和社会工程
  • ESReverser -用JavaScript编写的可识别Unicode的字符串反向器.
  • mimic -[ab]使用Unicode造成悲剧
  • python-ftfy -在给定Unicode文本的情况下,使其表示形式一致,并减少损坏.
  • vim-troll-stopper -阻止Unicode巨魔弄乱您的代码.

Emojis

Diversity

Unicode联盟已做出了巨大的努力,以更好地反映和融合人类多样性,包括文化习俗. 这是财团 diversity report.

现在可以使用混合性别情况的表情符号,例如同性家庭,手牵着手和亲吻. 真正的踢手是 Emoji combined sequences . 基本上:

| 代码点| 食谱 合并| |-------------|----------|----------| | 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|||

Further, emojis now support skin color modifiers.

> Unicode版本8.0(2015年中)发布了五个提供人类表情符号肤色的符号修饰符. 这些字符基于Fitzpatrick量表的六种音调,Fitzpatrick量表是皮肤病学公认的标准(在线有很多该量表的示例,例如FitzpatrickSkinType.pdf). 确切的阴影可能在实现之间有所不同. - Unicode Consortium's Diversity report

| 代码 姓名| 样品 |---------|-------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | U + 1F3FB | 表情符号修改FITZPATRICK TYPE-1-2 | | | U + 1F3FC | 表情符号修改FITZPATRICK TYPE-3 | | | U + 1F3FD | 表情符号修改FITZPATRICK TYPE-4 | | | U + 1F3FE | 表情符号修改FITZPATRICK TYPE-5 | | | U + 1F3FF | 表情符号修改FITZPATRICK TYPE-6 | |

只需使用皮肤修饰符“ u {1F466} u {1F3FE}”之一跟随所需的表情符号即可.

+

Creatively Naming Variables and Methods

示例以JavaScript(ES6)编写

通常,将字符指定为 ID_START 属性可以在变量名开始时使用. 用指定的字符 ID_CONTINUE 属性可以在变量的第一个字符之后使用.

函数randμσ{...};

String.prototype.reverseⵑ= function(){..};

Number.prototype.isTrueɁ= function(){..};

varWhatDoesThisDoɁɁɁɁ= 42

这是一些来自 Mathias Bynes

//多么方便!
varπ= Math.PI;

//有时,您只需要使用JavaScript的不良部分:
var th_tha = eval;

//代码,YU NO WORK ?!
varლ_th益th_ლ= 42;

//用于函数式编程的JavaScript库如何?
varλ= function(){};

//混淆无聊的变量名,以求公义
var = heh;

//…或者只是随机组成
varꙬൽↈ='huh';

//虽然完全有效,但在大多数浏览器中均无效:
var foo = bar = 42;

//这不是*按位左移(`<<`):
var〱〱= 2;
//这是:
〱〱 << 〱〱; // 8

//给自己打折:
varprice_9̶9̶_89=&#39;便宜&#39;;

//罗马数字带来的乐趣
varⅣ= 4;
varⅤ= 5;
 + ; // 9

//克苏鲁在这里
var Hͫ̆̒̐ͣ¿̄ͯ͗͏̵̗̻̰̠̬͝ͅE̴̷̬͎̱̘͇͍̾ͦ͊͒͊̓̓̐_̫̠̱̩̭̤͈̑̎̋ͮͩ̒͑̾͋͘Ç̫̠̱̩̭̤͈̑̎̋ͮͩ̒͑̾͋͘O̳͕̯̭̱̲̣̠̜͋̍¿̈͘͠M̶̝̠̭̭̤̻͓͑̓¿ͣͤ̎͟͠E̢̞̮̹͍̞̳̣ͣͪ͐̈T̡̯̳̭̜̠͕͌̈́̽̿ͤ̿̅̑Ḧ̱̱̺̰̳̹̘̰́̏ͪ̂̽͂̀͠ =&#39;Zalgo&#39;;

这是一些 Unicode CSS Classes 来自David Walsh

<!-- place this within the document head -->
<meta charset="UTF-8" />

<!-- error message -->
<div class="ಠ_ಠ">您无权访问此页面. </div>

<!-- success message -->
<div class="❤">您的更改已成功保存! </div>

.主题
    border: 1px solid #f00;
}

. {
    背景:浅绿色;
}

Recursive HTML Tag Renaming Script

如果要将所有HTML标记重命名为什么都没有显示,则以下脚本正是您想要的.

但是请注意,HTML不支持所有unicode字符.

// U + 1160 HANGUL JUNGSEONG FILLER
transformAllTags('ᅠ');

//使用U + 01C3拉丁字母RETROFLEX CLICK设计成看起来像注释节点的实际HTML元素节点 
//  <ǃ-- name="viewport" content="width=device-width"></ǃ-->
transformAllTags('ǃ--');

//甚至&lt;ᅠ⃝
transformAllTags('\u{1160}\u{20dd}');

 //作为奖励,所有现有标签名称都将每个字符都加上空格.  h⃞t⃞m⃞l⃞
transformAllTags();


函数transformAllTagsnewName{
   // querySelectorAll实际上并不返回数组.
   Array.fromdocument.querySelectorAll&#39;*&#39;))
     .forEachfunctionx{
         transformTagxnewName;
   });
}

函数wunkystr{
  返回str.split&#39;&#39;.join&#39;\ u {20de}&#39;+&#39;\ u {20de}&#39;;
}

函数transformTagtagIdOrElemtagType{
     var elem =HTMLElement的tagIdOrElem实例)?  tagIdOrElemdocument.getElementByIdtagIdOrElem;
    if(!elem ||!(HTMLElement的elem实例))返回;
    var children = elem.childNodes;
    var parent = elem.parentNode;
    var newNode = document.createElementtagType || wonkyelem.tagName));;
    forvar a = 0; a
        newNode.setAttributeelem.attributes [a] .nodeNameelem.attributes [a] .value;
    }
    forvar i = 0clen = children.length; i
         newNode.appendChildchildren [0];  // 0 ...始终指向第一个不可移动的元素
    }
    newNode.style.cssText = elem.style.cssText;
    parent.replaceChildnewNodeelem;
}
这是它支持的内容:

函数testBeginstr{
 尝试{
    eval`document.createElement(&#39;$ {str}&#39;);`
    返回true
 }
  catche{返回false  }
}

函数testContinuestr{
 尝试{
    eval`document.createElement(&#39;a $ {str}&#39;);`
    返回true
 }
  catche{返回false  }
}

这是一些基本结果

//测试破折号是否可以启动HTML标记
&gt; TestBegin&#39;-&#39;
< false

&gt; testContinue&#39;-&#39;
< true

&gt; testBegin&#39;-&#39;//用U + 1160 HANGUL JUNGSEONG FILLER加上破折号
< true

Unicode Fonts

单一的TrueType / OpenType字体格式不能覆盖所有UTF-8字符,因为字体的硬性限制为65535个字形. 由于存在超过110万个UTF-8冲突,因此您将需要使用字体家族来涵盖所有问题. - https://en.wikipedia.org/wiki/Unicode_font#List_of_Unicode_fonts - http://www.unifont.org/fontguide/

More Reading

Exploring Deeper into Unicode Yourself

Overview Map

A map of the Basic Multilingual Plane

每个编号的框代表256个代码点.

A map of the Basic Multilingual Plane. Each numbered box represents 256 code points.

中文,日文和韩文(CJK)脚本具有共同的背景,统称为CJK字符. 在称为汉族统一的过程中,常见(共享)字符被识别并命名为“中日韩统一表意文字”.

Unicode Blocks

  • Unicode标准将字符组以块的形式排列在一起. 这是所有17个平面上的块的完整列表.*
Name From To # Codepoints
Basic Latin U + 0000 U + 007F (128)
Latin-1 Supplement U + 0080 U + 00FF (128)
Latin Extended-A U + 0100 U + 017F (128)
Latin Extended-B U + 0180 U + 024F (208)
IPA Extensions U + 0250 U + 02AF (96)
Spacing Modifier Letters U + 02B0 U + 02FF (80)
Combining Diacritical Marks U + 0300 U + 036F (112)
Greek and Coptic U + 0370 U + 03FF (135)
Cyrillic U + 0400 U + 04FF (256)
Cyrillic Supplement U + 0500 U + 052F (48)
Armenian U + 0530 U + 058F (89)
Hebrew U + 0590 U + 05FF (87)
Arabic U + 0600 U + 06FF (255)
Syriac U + 0700 U + 074F (77)
Arabic Supplement U + 0750 U + 077F (48)
Thaana U + 0780 U + 07BF (50)
NKo U + 07C0 U + 07FF (59)
Samaritan U + 0800 U + 083F (61)
Mandaic U + 0840 U + 085F (29)
Arabic Extended-A U + 08A0 U + 08FF (50)
Devanagari U + 0900 U + 097F (128)
Bengali U + 0980 U + 09FF (93)
Gurmukhi U + 0A00 U + 0A7F (79)
Gujarati U + 0A80 U + 0AFF (85)
Oriya U + 0B00 U + 0B7F (90)
Tamil U + 0B80 U + 0BFF (72)
Telugu U + 0C00 U + 0C7F (96)
Kannada U + 0C80 U + 0CFF (87)
Malayalam U + 0D00 U + 0D7F (100)
Sinhala U + 0D80 U + 0DFF (90)
Thai U + 0E00 U + 0E7F (87)
Lao U + 0E80 U + 0EFF (67)
Tibetan U + 0F00 U + 0FFF (211)
Myanmar U + 1000 U + 109F (160)
Georgian U + 10A0 U + 10FF (88)
Hangul Jamo U + 1100 U + 11FF (256)
Ethiopic U + 1200 U + 137F (358)
Ethiopic Supplement U + 1380 U + 139F (26)
Cherokee U + 13A0 U + 13FF (92)
Unified Canadian Aboriginal Syllabics U + 1400 U + 167F (640)
Ogham U + 1680 U + 169F (29)
Runic U + 16A0 U + 16FF (89)
Tagalog U + 1700 U + 171F (20)
Hanunoo U + 1720 U + 173F (23)
Buhid U + 1740 U + 175F (20)
Tagbanwa U + 1760 U + 177F (18)
Khmer U + 1780 U + 17FF (114)
Mongolian U + 1800 U + 18AF (156)
Unified Canadian Aboriginal Syllabics Extended U + 18B0 U + 18FF (70)
Limbu U + 1900 U + 194F (68)
Tai Le U + 1950 U + 197F (35)
New Tai Lue U + 1980 U + 19DF (83)
Khmer Symbols U + 19E0 U + 19FF (32)
Buginese U + 1A00 U + 1A1F (30)
Tai Tham U + 1A20 U + 1AAF (127)
Combining Diacritical Marks Extended U + 1AB0 U + 1AFF (15)
Balinese U + 1B00 U + 1B7F (121)
Sundanese U + 1B80 U + 1BBF (64)
Batak U + 1BC0 U + 1BFF (56)
Lepcha U + 1C00 U + 1C4F (74)
Ol Chiki U + 1C50 U + 1C7F (48)
Sundanese Supplement U + 1CC0 U + 1CCF (8)
Vedic Extensions U + 1CD0 U + 1CFF (41)
Phonetic Extensions U + 1D00 U + 1D7F (128)
Phonetic Extensions Supplement U + 1D80 U + 1DBF (64)
Combining Diacritical Marks Supplement U + 1DC0 U + 1DFF (58)
Latin Extended Additional U + 1E00 U + 1EFF (256)
Greek Extended U + 1F00 U + 1FFF (233)
General Punctuation U + 2000 U + 206F (111)
Superscripts and Subscripts U + 2070 U + 209F (42)
Currency Symbols U + 20A0 U + 20CF (31)
Combining Diacritical Marks for Symbols U + 20D0 U + 20FF (33)
Letterlike Symbols U + 2100 U + 214F (80)
Number Forms U + 2150 U + 218F (60)
Arrows U + 2190 U + 21FF (112)
Mathematical Operators U + 2200 U + 22FF (256)
Miscellaneous Technical U + 2300 U + 23FF (251)
Control Pictures U + 2400 U + 243F (39)
Optical Character Recognition U + 2440 U + 245F (11)
Enclosed Alphanumerics U + 2460 U + 24FF (160)
Box Drawing U + 2500 U + 257F (128)
Block Elements U + 2580 U + 259F (32)
Geometric Shapes U + 25A0 U + 25FF (96)
Miscellaneous Symbols U + 2600 U + 26FF (256)
Dingbats U + 2700 U + 27BF (192)
Miscellaneous Mathematical Symbols-A U + 27C0 U + 27EF (48)
Supplemental Arrows-A U + 27F0 U + 27FF (16)
Braille Patterns U + 2800 U + 28FF (256)
Supplemental Arrows-B U + 2900 U + 297F (128)
Miscellaneous Mathematical Symbols-B U + 2980 U + 29FF (128)
Supplemental Mathematical Operators U + 2A00 U + 2AFF (256)
Miscellaneous Symbols and Arrows U + 2B00 U + 2BFF (206)
Glagolitic U + 2C00 U + 2C5F (94)
Latin Extended-C U + 2C60 U + 2C7F (32)
Coptic U + 2C80 U + 2CFF (123)
Georgian Supplement U + 2D00 U + 2D2F (40)
Tifinagh U + 2D30 U + 2D7F (59)
Ethiopic Extended U + 2D80 U + 2DDF (79)
Cyrillic Extended-A U + 2DE0 U + 2DFF (32)
Supplemental Punctuation U + 2E00 U + 2E7F (67)
CJK Radicals Supplement U + 2E80 U + 2EFF (115)
Kangxi Radicals U + 2F00 U + 2FDF (214)
Ideographic Description Characters U + 2FF0 U + 2FFF (12)
CJK Symbols and Punctuation U + 3000 U + 303F (64)
Hiragana U + 3040 U + 309F (93)
Katakana U + 30A0 U + 30FF (96)
Bopomofo U + 3100 U + 312F (41)
Hangul Compatibility Jamo U + 3130 U + 318F (94)
Kanbun U + 3190 U + 319F (16)
Bopomofo Extended U + 31A0 U + 31BF (27)
CJK Strokes U + 31C0 U + 31EF (36)
Katakana Phonetic Extensions U + 31F0 U + 31FF (16)
Enclosed CJK Letters and Months U + 3200 U + 32FF (254)
CJK Compatibility U + 3300 U + 33FF (256)
CJK Unified Ideographs Extension A U + 3400 U + 4DBF (6191)
Yijing Hexagram Symbols U + 4DC0 U + 4DFF (64)
CJK Unified Ideographs U + 4E00 U + 9FFF (20941)
Yi Syllables U + A000 U + A48F (1165)
Yi Radicals U + A490 U + A4CF (55)
Lisu U + A4D0 U + A4FF (48)
Vai U + A500 U + A63F (300)
Cyrillic Extended-B U + A640 U + A69F (96)
Bamum U + A6A0 U + A6FF (88)
Modifier Tone Letters U + A700 U + A71F (32)
Latin Extended-D U + A720 U + A7FF (159)
Syloti Nagri U + A800 U + A82F (44)
Common Indic Number Forms U + A830 U + A83F (10)
Phags-pa U + A840 U + A87F (56)
Saurashtra U + A880 U + A8DF (81)
Devanagari Extended U + A8E0 U + A8FF (30)
Kayah Li U + A900 U + A92F (48)
Rejang U + A930 U + A95F (37)
Hangul Jamo Extended-A U + A960 U + A97F (29)
Javanese U + A980 U + A9DF (91)
Myanmar Extended-B U + A9E0 U + A9FF (31)
Cham U + AA00 U + AA5F (83)
Myanmar Extended-A U + AA60 U + AA7F (32)
Tai Viet U + AA80 U + AADF (72)
Meetei Mayek Extensions U + AAE0 U + AFF (23)
Ethiopic Extended-A U + AB00 U + AB2F (32)
Latin Extended-E U + AB30 U + AB6F (54)
Cherokee Supplement U + AB70 U + ABBF (80)
Meetei Mayek U + ABC0 U + ABFF (56)
Hangul Syllables U + AC00 U + D7AF (2)
Hangul Jamo Extended-B U + D7B0 U + D7FF (72)
High Surrogates U + D800 U + DB7F (2)
High Private Use Surrogates U + DB80 U + DBFF (2)
Low Surrogates U + DC00 U + DFFF (2)
Private Use Area U + E000 U + F8FF (2)
CJK Compatibility Ideographs U + F900 U + FAFF (472)
Alphabetic Presentation Forms U + FB00 U + FB4F (58)
Arabic Presentation Forms-A U + FB50 U + FDF​​F (643)
Variation Selectors U + FE00 U + FE0F (16)
Vertical Forms U + FE10 U + FE1F (10)
Combining Half Marks U + FE20 U + FE2F (16)
CJK Compatibility Forms U + FE30 U + FE4F (32)
Small Form Variants U + FE50 U + FE6F (26)
Arabic Presentation Forms-B U + FE70 U + FEFF (141)
Halfwidth and Fullwidth Forms U + FF00 U + FFEF (225)
Specials U + FFF0 U + FFFF (7)
Linear B Syllabary U + 10000 U + 1007F (88)
Linear B Ideograms U + 10080 U + 100FF (123)
Aegean Numbers U + 10100 U + 1013F (57)
Ancient Greek Numbers U + 10140 U + 1018F (77)
Ancient Symbols U + 10190 U + 101CF (13)
Phaistos Disc U + 101D0 U + 101FF (46)
Lycian U + 10280 U + 1029F (29)
Carian U + 102A0 U + 102DF (49)
Coptic Epact Numbers U + 102E0 U + 102FF (28)
Old Italic U + 10300 U + 1032F (36)
Gothic U + 10330 U + 1034F (27)
Old Permic U + 10350 U + 1037F (43)
Ugaritic U + 10380 U + 1039F (31)
Old Persian U + 103A0 U + 103DF (50)
Deseret U + 10400 U + 1044F (80)
Shavian U + 10450 U + 1047F (48)
Osmanya U + 10480 U + 104AF (40)
Elbasan U + 10500 U + 1052F (40)
Caucasian Albanian U + 10530 U + 1056F (53)
Linear A U + 10600 U + 1077F (341)
Cypriot Syllabary U + 10800 U + 1083F (55)
Imperial Aramaic U + 10840 U + 1085F (31)
Palmyrene U + 10860 U + 1087F (32)
Nabataean U + 10880 U + 108AF (40)
Hatran U + 108E0 U + 108FF (26)
Phoenician U + 10900 U + 1091F (29)
Lydian U + 10920 U + 1093F (27)
Meroitic Hieroglyphs U + 10980 U + 1099F (32)
Meroitic Cursive U+109A0 U+109FF (90)
Kharoshthi U+10A00 U+10A5F (65)
Old South Arabian U + 10A60 U + 10A7F (32)
Old North Arabian U + 10A80 U + 10A9F (32)
Manichaean U + 10AC0 U + 10AFF (51)
Avestan U + 10B00 U + 10B3F (61)
Inscriptional Parthian U + 10B40 U + 10B5F (30)
Inscriptional Pahlavi U + 10B60 U + 10B7F (27)
Psalter Pahlavi U + 10B80 U + 10BAF (29)
Old Turkic U + 10C00 U + 10C4F (73)
Old Hungarian U + 10C80 U + 10CFF (108)
Rumi Numeral Symbols U + 10E60 U + 10E7F (31)
Brahmi U + 11000 U + 1107F (109)
Kaithi U + 11080 U + 110CF (66)
Sora Sompeng U + 110D0 U + 110FF (35)
Chakma U + 11100 U + 1114F (67)
Mahajani U + 11150 U + 1117F (39)
Sharada U + 11180 U + 111DF (94)
Sinhala Archaic Numbers U + 111E0 U + 111FF (20)
Khojki U + 11200 U + 1124F (61)
Multani U + 11280 U + 112AF (38)
Khudawadi U + 112B0 U + 112FF (69)
Grantha U + 11300 U + 1137F (85)
Tirhuta U + 11480 U + 114DF (82)
Siddham U + 11580 U + 115FF (92)
Modi U + 11600 U + 1165F (79)
Takri U + 11680 U + 116CF (66)
Ahom U + 11700 U + 1173F (57)
Warang Citi U + 118A0 U + 118FF (84)
Pau Cin Hau U + 11AC0 U + 11AFF (57)
Cuneiform U + 12000 U + 123FF (922)
Cuneiform Numbers and Punctuation U + 12400 U + 1247F (116)
Early Dynastic Cuneiform U + 12480 U + 1254F (196)
Egyptian Hieroglyphs U + 13000 U + 1342F (1071)
Anatolian Hieroglyphs U + 14400 U + 1467F (583)
Bamum Supplement U + 16800 U + 16A3F (569)
Mro U + 16A40 U + 16A6F (43)
Bassa Vah U + 16AD0 U + 16AFF (36)
Pahawh Hmong U + 16B00 U + 16B8F (127)
Miao U + 16F00 U + 16F9F (133)
Kana Supplement U + 1B000 U + 1B0FF (2)
Duployan U + 1BC00 U + 1BC9F (143)
Shorthand Format Controls U + 1BCA0 U + 1BCAF (4)
Byzantine Musical Symbols U + 1D000 U + 1D0FF (246)
Musical Symbols U + 1D100 U + 1D1FF (231)
Ancient Greek Musical Notation U + 1D200 U + 1D24F (70)
Tai Xuan Jing Symbols U + 1D300 U + 1D35F (87)
Counting Rod Numerals U + 1D360 U + 1D37F (18)
Mathematical Alphanumeric Symbols U + 1D400 U + 1D7FF (996)
Sutton SignWriting U + 1D800 U + 1DAAF (672)
Mende Kikakui U + 1E800 U + 1E8DF (213)
Arabic Mathematical Alphabetic Symbols U + 1EE00 U + 1EEFF (143)
Mahjong Tiles U + 1F000 U + 1F02F (44)
Domino Tiles U + 1F030 U + 1F09F (100)
Playing Cards U+1F0A0 U+1F0FF (82)
Enclosed Alphanumeric Supplement U + 1F100 U + 1F1FF (173)
Enclosed Ideographic Supplement U + 1F200 U + 1F2FF (57)
Miscellaneous Symbols and Pictographs U + 1F300 U + 1F5FF (766)
Emoticons U + 1F600 U + 1F64F (80)
Ornamental Dingbats U + 1F650 U + 1F67F (48)
Transport and Map Symbols U + 1F680 U + 1F6FF (98)
Alchemical Symbols U + 1F700 U + 1F77F (116)
Geometric Shapes Extended U + 1F780 U + 1F7FF (85)
Supplemental Arrows-C U + 1F800 U + 1F8FF (148)
Supplemental Symbols and Pictographs U + 1F900 U + 1F9FF (15)
CJK Unified Ideographs Extension B U + 20000 U + 2A6DF (42676)
CJK Unified Ideographs Extension C U + 2A700 U + 2B73F (60)
CJK Unified Ideographs Extension D U + 2B740 U + 2B81F (27)
CJK Unified Ideographs Extension E U + 2B820 U + 2CEAF (2)
CJK Compatibility Ideographs Supplement U + 2F800 U + 2FA1F (542)
Tags U + E0000 U + E007F (97)
Variation Selectors Supplement U + E0100 U + E01EF (240)
Supplementary Private Use Area-A U + F0000 U + FFFFF (4)
Supplementary Private Use Area-B U + 100000 U + 10FFFF (4)

Principles of the Unicode Standard

Unicode标准阐述了以下基本原则:

  • 通用曲目-所使用的每个书写系统都应得到尊重并在标准中代表
  • 逻辑顺序-双向文本中的字符是以逻辑顺序存储的,而不是以表示形式的方式存储
  • 效率-文档必须有效且完整.
  • 统一-如果不同的文化或语言使用相同的字符,则只能包含一次. 这一点是
  • 字符,而非字形-仅对字符(而非字形)进行编码. 简而言之,字形是实际的图形
  • 动态组成-新字符可以由其他已经标准化的字符组成. 例如,字符“Ä”可以由一个“ A”和一个降压符号(“¨”)组成.
  • 语义-包含的字符必须定义清楚,并与其他字符区分开.
  • 稳定性-一旦定义的字符将永远不会被删除或重新分配它们的代码点. 如果发生错误,则不建议使用代码点.
  • 纯文本-标准中的字符是文本,绝不包含标记或元字符.
  • 可转换性-其他所有使用的编码均应以Unicode编码表示.

注意:原理描述来自 codepoints.net

Unicode Versions



Contributing

请参阅*超赞Unicode * contribution guide 有关如何贡献的详细信息.

Code of Conduct

Code of Conduct 有关详细信息. 基本上可以归结为: >为了营造一个开放和热情的环境,我们 贡献者和维护者承诺参与我们的项目, 我们的社区为每个人,不论年龄,身材,提供无骚扰的体验 大小,残疾,种族,性别认同和表达,经验水平, nationality, personal appearance, race, religion, or sexual identity and orientation.

License

CC0

在法律允许的范围内, contributors 放弃了此作品的所有版权以及相关或邻近的权利. 见 license file 有关详细信息.