ASCII码表
使用7位进行编码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| Oct Dec Hex Char Oct Dec Hex Char ------------------------------------------------------------ 000 0 00 NUL '\0' 100 64 40 @ 001 1 01 SOH 101 65 41 A 002 2 02 STX 102 66 42 B 003 3 03 ETX 103 67 43 C 004 4 04 EOT 104 68 44 D 005 5 05 ENQ 105 69 45 E 006 6 06 ACK 106 70 46 F 007 7 07 BEL '\a' 107 71 47 G 010 8 08 BS '\b' 110 72 48 H 011 9 09 HT '\t' 111 73 49 I 012 10 0A LF '\n' 112 74 4A J 013 11 0B VT '\v' 113 75 4B K 014 12 0C FF '\f' 114 76 4C L 015 13 0D CR '\r' 115 77 4D M 016 14 0E SO 116 78 4E N 017 15 0F SI 117 79 4F O 020 16 10 DLE 120 80 50 P 021 17 11 DC1 121 81 51 Q 022 18 12 DC2 122 82 52 R 023 19 13 DC3 123 83 53 S 024 20 14 DC4 124 84 54 T 025 21 15 NAK 125 85 55 U 026 22 16 SYN 126 86 56 V 027 23 17 ETB 127 87 57 W 030 24 18 CAN 130 88 58 X 031 25 19 EM 131 89 59 Y 032 26 1A SUB 132 90 5A Z 033 27 1B ESC 133 91 5B [ 034 28 1C FS 134 92 5C \ '\\' 035 29 1D GS 135 93 5D ] 036 30 1E RS 136 94 5E ^ 037 31 1F US 137 95 5F _ 040 32 20 SPACE 140 96 60 ` 041 33 21 ! 141 97 61 a 042 34 22 " 142 98 62 b 043 35 23 # 143 99 63 c 044 36 24 $ 144 100 64 d 045 37 25 % 145 101 65 e 046 38 26 & 146 102 66 f 047 39 27 ' 147 103 67 g 050 40 28 ( 150 104 68 h 051 41 29 ) 151 105 69 i 052 42 2A * 152 106 6A j 053 43 2B + 153 107 6B k 054 44 2C , 154 108 6C l 055 45 2D - 155 109 6D m 056 46 2E . 156 110 6E n 057 47 2F / 157 111 6F o 060 48 30 0 160 112 70 p 061 49 31 1 161 113 71 q 062 50 32 2 162 114 72 r 063 51 33 3 163 115 73 s 064 52 34 4 164 116 74 t 065 53 35 5 165 117 75 u 066 54 36 6 166 118 76 v 067 55 37 7 167 119 77 w 070 56 38 8 170 120 78 x 071 57 39 9 171 121 79 y 072 58 3A : 172 122 7A z 073 59 3B ; 173 123 7B { 074 60 3C < 174 124 7C | 075 61 3D = 175 125 7D } 076 62 3E > 176 126 7E ~ 077 63 3F ? 177 127 7F DEL
|
ISO 8859
八位字节现在是字节的标准大小。这允许128个额外的代码点用于ASCII的扩展。ISO 8859系列是许多不同的代码集,用于捕获各种欧洲语言子集的所有组成部分。ISO 8859-1也被称为Latin-1,涵盖了西欧的许多语言,而本系列中的其他语言涵盖欧洲其他地区,甚至包括希伯来语,阿拉伯语和泰语。例如,ISO 8859-5包括俄罗斯等国家的西里尔字符,而ISO 8859-8包括希伯来字母。
这些字符集的标准编码是将其代码点用作8位值。例如,ISO 8859-1中的字符“Á”具有代码点193并编码为193.所有ISO 8859系列都具有与ASCII相同的底部128个值,因此ASCII字符在所有中都是相同的这些集。
用于推荐ISO 8859-1字符集的HTML规范。HTML 3.2是最后一个这样做的,之后HTML 4.0推荐使用Unicode。在2010年,谷歌估计其所看到的页面,大约20%仍然是ISO 8859格式,而20%仍然是ASCII(Unicode接近50%的网络)。
ASCII和ISO 8859都不包括基于象形文字的语言。据估计,中国有大约20,000个单独的字符,大约有5,000个常用字符。这些需要多一个字节,通常使用两个字节。这些双字节字符集有很多:Big5,EUC-TW,GB2312和GBK / GBX用于中文,JIS X 0208用于日语,等等。这些编码通常不是相互兼容的。
Unicode是一个包含标准的字符集,旨在涵盖所有正在使用的主要字符集。它包括欧洲,亚洲,印度等等。它现在是5.2版本,有超过107,000个字符。
前256个代码点对应于ISO 8859-1,US ASCII作为前128个。因此,这些主要字符集向后兼容,因为ISO 8859-1和ASCII的代码点在Unicode中完全相同。
要在计算机系统中表示Unicode字符,必须使用编码。编码UCS是使用Unicode字符的代码点值的双字节编码。但是,由于Unicode中现在有太多字符使它们全部适合2个字节,因此该编码已过时且不再使用。相反,有:
UTF-32是一个4字节编码,但不常用,HTML 5明确警告不要使用它
UTF-16将最常见的字符编码为2个字节,另外2个字节用于“溢出”,ASCII和ISO 8859-1具有通常的值
UTF-8每个字符使用1到4个字节,ASCII具有通常的值(但不是ISO 8859-1)
有时使用UTF-7,但不常见
UTF-8是最常用的编码。谷歌估计它看到的50%的页面都是用UTF-8编码的。ASCII集具有相同的UTF-8编码值,因此UTF-8阅读器可以读取仅包含ASCII字符的文本以及完整Unicode集中的文本。
Go在其字符串中使用UTF-8编码的字符。每个角色都是类型rune。这是一个别名,int32因为Unicode字符可以是UTF-8编码中的1,2或4个字节。就字符而言,字符串是runes 的数组。
字符串也是一个字节数组,但您必须要小心:只有ASCII子集是一个等于字符的字节。所有其他字符占用两个,三个或四个字节。这意味着以字符(符文)表示的字符串长度通常与其字节数组的长度不同。仅当字符串仅由ASCII字符组成时,它们才相等。
以下程序片段说明了这一点。如果我们使用UTF-8字符串并测试其长度,则获得基础字节数组的长度。但是如果你将字符串转换为符文数组,[]rune那么你得到一个Unicode代码点数组,通常是字符数:
1 2 3
| str := "百度一下,你就知道" println("String length", len([]rune(str))) println("Byte length", len(str))
|
输出:
1 2
| String length 9 Byte length 27
|
灾难总是接踵而至,这正是世间的常理。你以为只要哭诉一下,就会有谁来救你?如果失败了,就只能说明我不过是如此程度的男人