Skip to content

11-字符类型

字符类型使用 Rune /ruːn/ 表示,可以表示 Unicode 字符集中的所有字符。

统一码(Unicode),也叫万国码、单一码,由统一码联盟开发,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。

统一码是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、

跨平台进行文本转换、处理的要求。

字符类型字面量

字符类型字面量有三种形式:单个字符、转义字符和通用字符。一个 Rune 字面量由字符 r 开头,后跟一个由一对单引号或双引号包含的字符。

单个字符的字符字面量举例:

javascript
let a: Rune = r'a'
let b: Rune = r"b"

转义字符是指在一个字符序列中对后面的字符进行另一种解释的字符。转义字符使用转义符号 \ 开头,后面加需要转义的字符。举例如下:

javascript
let slash: Rune = r'\\'
let newLine: Rune = r'\n'
let tab: Rune = r'\t'

通用字符以 \u 开头,后面加上定义在一对花括号中的 1~8 个十六进制数,即可表示对应的 Unicode 值代表的字符。举例如下:

javascript
main() {
    let he: Rune = r'\u{4f60}'
    let llo: Rune = r'\u{597d}'
    print(he)
    print(llo)
}

编译并执行上述代码,输出结果为:

text
你好

字符类型支持的操作

字符类型仅支持关系操作符:小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、相等(==)、不等(!=)。比较的是字符的 Unicode 值。

Rune 可以转换为 UInt32,整数类型可以转换为 Rune,具体的类型转换语法及规则请参见RuneUInt32 和整数类型到 Rune 的转换

Unicode和ASCII的关系

Unicode和ASCII的关系主要体现在Unicode是ASCII的超集,包含了ASCII的所有字符,并且能够表示更多的字符。

ASCII

大小规则:****

常见ASCII码的大小规则:数字< 大写字母 < 小写字母。

1.数字比字母要小。如 “7”<“F”;

2.数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;

3.字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;

4.同个字母的大写字母比小写字母要小32。如“A”<“a” 。

几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48

Bin(二进制)Oct(八进制)Dec(十进制)Hex(十六进制)缩写/字符解释
0000 00000000x00NUL(null)空字符
0000 00010110x01SOH(start of headline)标题开始
0000 00100220x02STX (start of text)正文开始
0000 00110330x03ETX (end of text)正文结束
0000 01000440x04EOT (end of transmission)传输结束
0000 01010550x05ENQ (enquiry)请求
0000 01100660x06ACK (acknowledge)收到通知
0000 01110770x07BEL (bell)响铃
0000 100001080x08BS (backspace)退格
0000 100101190x09HT (horizontal tab)水平制表符
0000 1010012100x0ALF (NL line feed, new line)换行键
0000 1011013110x0BVT (vertical tab)垂直制表符
0000 1100014120x0CFF (NP form feed, new page)换页键
0000 1101015130x0DCR (carriage return)回车键
0000 1110016140x0ESO (shift out)不用切换
0000 1111017150x0FSI (shift in)启用切换
0001 0000020160x10DLE (data link escape)数据链路转义
0001 0001021170x11DC1 (device control 1)设备控制1
0001 0010022180x12DC2 (device control 2)设备控制2
0001 0011023190x13DC3 (device control 3)设备控制3
0001 0100024200x14DC4 (device control 4)设备控制4
0001 0101025210x15NAK (negative acknowledge)拒绝接收
0001 0110026220x16SYN (synchronous idle)同步空闲
0001 0111027230x17ETB (end of trans. block)结束传输块
0001 1000030240x18CAN (cancel)取消
0001 1001031250x19EM (end of medium)媒介结束
0001 1010032260x1ASUB (substitute)代替
0001 1011033270x1BESC (escape)换码(溢出)
0001 1100034280x1CFS (file separator)文件分隔符
0001 1101035290x1DGS (group separator)分组符
0001 1110036300x1ERS (record separator)记录分隔符
0001 1111037310x1FUS (unit separator)单元分隔符
0010 0000040320x20(space)空格
0010 0001041330x21!叹号
0010 0010042340x22"双引号
0010 0011043350x23#井号
0010 0100044360x24$美元符
0010 0101045370x25%百分号
0010 0110046380x26&和号
0010 0111047390x27'单引号
0010 1000050400x28(开括号
0010 1001051410x29)闭括号
0010 1010052420x2A*星号
0010 1011053430x2B+加号
0010 1100054440x2C,逗号
0010 1101055450x2D-减号/破折号
0010 1110056460x2E.句号
0010 1111057470x2F/斜杠
0011 0000060480x300字符0
0011 0001061490x311字符1
0011 0010062500x322字符2
0011 0011063510x333字符3
0011 0100064520x344字符4
0011 0101065530x355字符5
0011 0110066540x366字符6
0011 0111067550x377字符7
0011 1000070560x388字符8
0011 1001071570x399字符9
0011 1010072580x3A:冒号
0011 1011073590x3B;分号
0011 1100074600x3C<小于
0011 1101075610x3D=等号
0011 1110076620x3E>大于
0011 1111077630x3F?问号
0100 00000100640x40@电子邮件符号
0100 00010101650x41A大写字母A
0100 00100102660x42B大写字母B
0100 00110103670x43C大写字母C
0100 01000104680x44D大写字母D
0100 01010105690x45E大写字母E
0100 01100106700x46F大写字母F
0100 01110107710x47G大写字母G
0100 10000110720x48H大写字母H
0100 10010111730x49I大写字母I
010010100112740x4AJ大写字母J
0100 10110113750x4BK大写字母K
0100 11000114760x4CL大写字母L
0100 11010115770x4DM大写字母M
0100 11100116780x4EN大写字母N
0100 11110117790x4FO大写字母O
0101 00000120800x50P大写字母P
0101 00010121810x51Q大写字母Q
0101 00100122820x52R大写字母R
0101 00110123830x53S大写字母S
0101 01000124840x54T大写字母T
0101 01010125850x55U大写字母U
0101 01100126860x56V大写字母V
0101 01110127870x57W大写字母W
0101 10000130880x58X大写字母X
0101 10010131890x59Y大写字母Y
0101 10100132900x5AZ大写字母Z
0101 10110133910x5B[开方括号
0101 11000134920x5C\反斜杠
0101 11010135930x5D]闭方括号
0101 11100136940x5E^脱字符
0101 11110137950x5F_下划线
0110 00000140960x60`开单引号
0110 00010141970x61a小写字母a
0110 00100142980x62b小写字母b
0110 00110143990x63c小写字母c
0110 010001441000x64d小写字母d
0110 010101451010x65e小写字母e
0110 011001461020x66f小写字母f
0110 011101471030x67g小写字母g
0110 100001501040x68h小写字母h
0110 100101511050x69i小写字母i
0110 101001521060x6Aj小写字母j
0110 101101531070x6Bk小写字母k
0110 110001541080x6Cl小写字母l
0110 110101551090x6Dm小写字母m
0110 111001561100x6En小写字母n
0110 111101571110x6Fo小写字母o
0111 000001601120x70p小写字母p
0111 000101611130x71q小写字母q
0111 001001621140x72r小写字母r
0111 001101631150x73s小写字母s
0111 010001641160x74t小写字母t
0111 010101651170x75u小写字母u
0111 011001661180x76v小写字母v
0111 011101671190x77w小写字母w
0111 100001701200x78x小写字母x
0111 100101711210x79y小写字母y
0111 101001721220x7Az小写字母z
0111 101101731230x7B{开花括号
0111 110001741240x7C|垂线
0111 110101751250x7D}闭花括号
0111 111001761260x7E~波浪号
0111 111101771270x7FDEL (delete)删除

文字范围

0000-007F:C0控制符及基本拉丁文(C0 Control and Basic Latin)

0080-00FF:C1控制符及拉丁文补充-1(C1 Control and Latin 1 Supplement)

0100-017F:拉丁文扩展-A(Latin Extended-A)

0180-024F:拉丁文扩展-B(Latin Extended-B)

0250-02AF:国际音标扩展(IPA Extensions)

02B0-02FF:空白修饰字母(Spacing Modifiers)

0300-036F:结合用读音符号(Combining Diacritics Marks)

0370-03FF:希腊文科普特文(Greek and Coptic)

0400-04FF:西里尔字母(Cyrillic)

0500-052F:西里尔字母补充(Cyrillic Supplement)

0530-058F:亚美尼亚语(Armenian)

0590-05FF:希伯来文(Hebrew)

0600-06FF:阿拉伯文(Arabic)

0700-074F:叙利亚文(Syriac)

0750-077F:阿拉伯文补充(Arabic Supplement)

0780-07BF:马尔代夫语(Thaana)

07C0-077F:西非书面语言(N'Ko)

0800-085F:阿维斯塔语巴列维语(Avestan and Pahlavi)

0860-087F:曼达安语(Mandaic)

0880-08AF:撒马利亚语(Samaritan

0900-097F:天城文书(Devanagari

0980-09FF:孟加拉语(Bengali)

0A00-0A7F:古木基文(Gurmukhi)

0A80-0AFF:古吉拉特文(Gujarati)

0B00-0B7F:奥里亚文(Oriya)

0B80-0BFF:泰米尔文(Tamil)

0C00-0C7F:泰卢固文(Telugu)

0C80-0CFF:卡纳达文(Kannada)

0D00-0D7F:马拉雅拉姆语(Malayalam)

D80-0DFF僧伽罗语(Sinhala)

0E00-0E7F:泰文(Thai)

0E80-0EFF:老挝文(Lao)

0F00-0FFF:藏文(Tibetan)

1000-109F:缅甸语(Myanmar)

10A0-10FF:格鲁吉亚语(Georgian)

1100-11FF:朝鲜文字母(Hangul Jamo)

1200-137F:埃塞俄比亚语(Ethiopic)

1380-139F:埃塞俄比亚语补充(Ethiopic Supplement)

13A0-13FF:切罗基语(Cherokee)

1400-167F:统一加拿大土著语音节(Unified Canadian Aboriginal Syllabics)

1680-169F:欧甘字母(Ogham)

16A0-16FF:如尼文(Runic)

1700-171F:塔加洛语 (Tagalog)

1720-173F:哈努诺文(Hanunóo)

1740-175F:布锡文(Buhid)

1760-177F:塔格巴努亚文(Tagbanwa)

1780-17FF:高棉语Khmer

1800-18AF蒙古文(Mongolian)

18B0-18FF:鞑靼语(Cham)

1900-194F:林布文(Limbu)

1950-197F:德宏傣语(Tai Le)

1980-19DF:新傣仂语(New Tai Lue)

19E0-19FF:高棉语记号(Khmer Symbols)

1A00-1A1F:布吉文(Buginese

1A20-1A5F:巴塔克文(Batak)

1A80-1AEF:兰纳文(Lanna/Tai Tham)

1B00-1B7F:巴厘语(Balinese)

1B80-1BB0:巽他语(Sundanese)

1BC0-1BFF:救世苗文(Pahawh Hmong)

1C00-1C4F:雷布查语(Lepcha)

1C50-1C7F:奥尔其基语字母(Ol Chiki)

1C80-1CDF:曼尼普尔语(Meithei/Manipuri)

1D00-1D7F:语音学扩展(Phonetic Extensions)

1D80-1DBF:语音学扩展补充(Phonetic Extensions Supplement)

1DC0-1DFF:结合用读音符号补充(Combining Diacritics Marks Supplement)

1E00-1EFF:拉丁文扩充附加(Latin Extended Additional)

1F00-1FFF:希腊语扩充(Greek Extended)

2000-206F:常用标点(General Punctuation)

2070-209F:上标下标(Superscripts and Subscripts)

20A0-20CF:货币符号(Currency Symbols)

20D0-20FF:组合用记号(Combining Diacritics Marks for Symbols)

2100-214F:字母式符号(Letterlike Symbols)

2150-218F:数字形式(Number Form)

2190-21FF:箭头(Arrows)

2200-22FF:数学运算符(Mathematical Operator)

2300-23FF:杂项工业符号(Miscellaneous Technical)

2400-243F:控制图片(Control Pictures)

2440-245F:光学识别符(Optical Character Recognition)

2460-24FF:封闭式字母数字(Enclosed Alphanumerics)

2500-257F:制表符(Box Drawing)

2580-259F:方块元素(Block Element)

25A0-25FF:几何图形(Geometric Shapes)

2600-26FF:杂项符号(Miscellaneous Symbols)

2700-27BF:印刷符号(Dingbats)

27C0-27EF:杂项数学符号-A(Miscellaneous Mathematical Symbols-A)

27F0-27FF:追加箭头-A(Supplemental Arrows-A)

2800-28FF:盲文点字模型(Braille Patterns)

2900-297F:追加箭头-B(Supplemental Arrows-B)

2980-29FF:杂项数学符号-B(Miscellaneous Mathematical Symbols-B)

2A00-2AFF:追加数学运算符(Supplemental Mathematical Operator)

2B00-2BFF:杂项符号和箭头(Miscellaneous Symbols and Arrows)

2C00-2C5F:格拉哥里字母(Glagolitic)

2C60-2C7F:拉丁文扩展-C(Latin Extended-C)

2C80-2CFF:古埃及语(Coptic)

2D00-2D2F:格鲁吉亚语补充(Georgian Supplement)

2D30-2D7F:提非纳文(Tifinagh)

2D80-2DDF:埃塞俄比亚语扩展(Ethiopic Extended)

2E00-2E7F:追加标点(Supplemental Punctuation)

2E80-2EFF:CJK部首补充(CJK Radicals Supplement)

2F00-2FDF:康熙字典部首(Kangxi Radicals)

2FF0-2FFF:表意文字描述符(Ideographic Description Characters)

3000-303F:CJK符号和标点(CJK Symbols and Punctuation)

3040-309F:日文平假名(Hiragana)

30A0-30FF:日文片假名Katakana

3100-312F:注音字母Bopomofo

3130-318F:朝鲜文兼容字母(Hangul Compatibility Jamo)

3190-319F:象形字注释标志(Kanbun)

31A0-31BF:注音字母扩展(Bopomofo Extended)

31C0-31EF:CJK笔画(CJK Strokes)

31F0-31FF:日文片假名语音扩展(Katakana Phonetic Extensions)

3200-32FF:封闭式CJK文字和月份(Enclosed CJK Letters and Months)

3300-33FF:CJK兼容(CJK Compatibility)

3400-4DBF:CJK统一表意符号扩展-A(CJK Unified Ideographs Extension-A)

4DC0-4DFF:易经六十四卦符号(Yijing Hexagrams Symbols)

4E00-9FFF:CJK统一表意符号(CJK Unified Ideographs)

A000-A48F:彝文音节(Yi Syllables)

A490-A4CF:彝文字根(Yi Radicals)

A500-A61F:瓦伊语(Vai)

A660-A6FF:统一加拿大土著语音节补充(Unified Canadian Aboriginal Syllabics Supplement)

A700-A71F:声调修饰字母(Modifier Tone Letters)

A720-A7FF:拉丁文扩展-D(Latin Extended-D)

A800-A82F:锡尔赫特文字母(Syloti Nagri)

A840-A87F:八思巴字(Phags-pa)

A880-A8DF:索拉什特拉语Saurashtra

A900-A97F:爪哇语(Javanese)

A980-A9DF:查克玛语(Chakma)

AA00-AA3F:Varang Kshiti

AA40-AA6F:索拉索姆字母(Sorang Sompeng)

AA80-AADF:尼瓦尔语(Newari)

AB00-AB5F:越南傣语(Vi?t Thái)

AB80-ABA0:克耶字母(Kayah Li)

AC00-D7AF:朝鲜文音节(Hangul Syllables)

D800-DBFF:High-half zone of UTF-16

DC00-DFFF:Low-half zone of UTF-16

E000-F8FF:自行使用区域(Private Use Zone)

F900-FAFF:CJK兼容象形文字(CJK Compatibility Ideographs)

FB00-FB4F:字母表达形式(Alphabetic Presentation Form)

FB50-FDFF:阿拉伯表达形式A(Arabic Presentation Form-A)

FE00-FE0F:变量选择符(Variation Selector)

FE10-FE1F:竖排形式(Vertical Forms)

FE20-FE2F:组合用半符号(Combining Half Marks)

FE30-FE4F:CJK兼容形式(CJK Compatibility Forms)

FE50-FE6F:小型变体形式(Small Form Variants)

FE70-FEFF:阿拉伯表达形式B(Arabic Presentation Form-B)

FF00-FFEF:半型及全型形式(Halfwidth and Fullwidth Form)

FFF0-FFFF:特殊(Specials)

10000–1FFFF:第1辅助平面,多文种补充平面(Supplementary Multilingual Plane, SMP) [1]

20000–2FFFF:第2辅助平面,**表意文字**补充平面(Supplementary Ideographic Plane, SIP) [1]

30000–3FFFF:第3辅助平面,**表意文字**第三平面(Tertiary Ideographic Plane, TIP)

40000–DFFFF:第4-13辅助平面,尚未使用

E0000–EFFFF:第14辅助平面,特别用途补充平面(Supplementary Special-purpose Plane, SSP)

F0000–FFFFF:第15辅助平面,保留作为私人使用区(Private Use Area, PUA

100000–10FFFF:第16辅助平面,保留作为私人使用区(Private Use Area, PUA) [1]

Released under the MIT License.