UTF-8:修訂版本之間的差異
出自福留子孫
(→有 URL 意涵的字元) |
(→(二)找出字符的碼位) |
||
第 37 行: | 第 37 行: | ||
====(二)找出字符的碼位==== | ====(二)找出字符的碼位==== | ||
− | #ord() | + | #ord(字串):轉換字串第一個位元組為某個碼位 (0~255 之間的值) |
+ | #mb_ord(字串, '編碼'):獲取字串的第一個字元在某一種 Unicode 編碼中的碼位值。編碼可以是 UTF-8、ISO-8859-1、Windows-1252。 | ||
===1 位元組編碼:=== | ===1 位元組編碼:=== |
2023年6月27日 (二) 23:24的修訂版本
目錄
特殊字元
有 HTML 或 URL 意涵的字元
字元 | 實體名稱 | 字元編碼 |
---|---|---|
不換行空格 | |   |
< | < | < |
> | > | > |
" | " | " |
' | ' | ' |
& | & | & |
碼位與字元
UTF-8編碼位元組含義:
- ◽◾◾◾◾◾◾◾,對於UTF-8編碼中的任意位元組B,如果B的第一位為0,則B獨立的表示一個字元(ASCII碼);
- ◾◽??????,128~191,如果B的第一位為1,第二位為0,則B為一個多位元組字元中的一個位元組(非ASCII字元);
- 識別位元固定為 128 ,表值 0~63。
- ◾◾◽?????,192~223,如果B的前兩位為1,第三位為0,則B為兩個位元組表示的字元中的第一個位元組;
- 識別位元固定為 192 ,(0~31)×64。
- ◾◾◾◽????,224~239,如果B的前三位為1,第四位為0,則B為三個位元組表示的字元中的第一個位元組;
- ◾◾◾◾◽???,240~247,如果B的前四位為1,第五位為0,則B為四個位元組表示的字元中的第一個位元組;
組成字(以「瓦」的中文 3 byte 為例):
- 第一 byte 231, 231-224=7 ,單位 4096
- 第二 byte 147, 147-128=19 ,單位 64
- 第三 byte 166, 166-128=38 ,單位 1
- 字碼 = 7×4096+19×64+38=29926 ,字碼寫成 瓦
顯示編碼位的方法:
以 PHP 為例。
(一)由整數生成對應的字符
- chr(整數碼位):產生單 byte 字元,如 ASCII、ISO-8859 或 Windows 1252。整數由 0~255 。無法通過傳遞一個 Unicode 碼位值來產生多位元組編碼 (像是 UTF-8 或 UTF-16) 字串。超過有效範圍 (0~255) 的值將用以下演算法處理:
while($bytevalue < 0){$bytevalue += 256;} $bytevalue %= 256;
- 多個chr(…)連接:如「echo chr(240).chr(159).chr(144).chr(152);」會得到「🐘」。
碼位寬度有幾 byte 和顯示字型有多寬無關。 - mb_chr(整數碼位,'UTF-8'):在啟用了 mbstring 擴展的前提下,可以使用。即使是控制碼也生成。
- &#整數碼位;:
- html_entity_decode('&#整數碼位;', ENT_NOQUOTES, 'UTF-8')
(二)找出字符的碼位
- ord(字串):轉換字串第一個位元組為某個碼位 (0~255 之間的值)
- mb_ord(字串, '編碼'):獲取字串的第一個字元在某一種 Unicode 編碼中的碼位值。編碼可以是 UTF-8、ISO-8859-1、Windows-1252。
1 位元組編碼:
0~31 控制字元
DEC | OCT | HEX | BIN | Symbol | HTML Number | HTML Name | Description |
---|---|---|---|---|---|---|---|
0 | 000 | 00 | 00000000 | NUL | � | Null character | |
1 | 001 | 01 | 00000001 | SOH |  | Start of Heading | |
2 | 002 | 02 | 00000010 | STX |  | Start of Text | |
3 | 003 | 03 | 00000011 | ETX |  | End of Text | |
4 | 004 | 04 | 00000100 | EOT |  | End of Transmission | |
5 | 005 | 05 | 00000101 | ENQ |  | Enquiry | |
6 | 006 | 06 | 00000110 | ACK |  | Acknowledge | |
7 | 007 | 07 | 00000111 | BEL |  | Bell, Alert | |
8 | 010 | 08 | 00001000 | BS |  | Backspace | |
9 | 011 | 09 | 00001001 | HT | 	 | Horizontal Tab | |
10 | 012 | 0A | 00001010 | LF | | Line Feed | |
11 | 013 | 0B | 00001011 | VT |  | Vertical Tabulation | |
12 | 014 | 0C | 00001100 | FF |  | Form Feed | |
13 | 015 | 0D | 00001101 | CR | | Carriage Return | |
14 | 016 | 0E | 00001110 | SO |  | Shift Out | |
15 | 017 | 0F | 00001111 | SI |  | Shift In | |
16 | 020 | 10 | 00010000 | DLE |  | Data Link Escape | |
17 | 021 | 11 | 00010001 | DC1 |  | Device Control One (XON) | |
18 | 022 | 12 | 00010010 | DC2 |  | Device Control Two | |
19 | 023 | 13 | 00010011 | DC3 |  | Device Control Three (XOFF) | |
20 | 024 | 14 | 00010100 | DC4 |  | Device Control Four | |
21 | 025 | 15 | 00010101 | NAK |  | Negative Acknowledge | |
22 | 026 | 16 | 00010110 | SYN |  | Synchronous Idle | |
23 | 027 | 17 | 00010111 | ETB |  | End of Transmission Block | |
24 | 030 | 18 | 00011000 | CAN |  | Cancel | |
25 | 031 | 19 | 00011001 | EM |  | End of medium | |
26 | 032 | 1A | 00011010 | SUB |  | Substitute | |
27 | 033 | 1B | 00011011 | ESC |  | Escape | |
28 | 034 | 1C | 00011100 | FS |  | File Separator | |
29 | 035 | 1D | 00011101 | GS |  | Group Separator | |
30 | 036 | 1E | 00011110 | RS |  | Record Separator | |
31 | 037 | 1F | 00011111 | US |  | Unit Separator |
32~127 顯示字元
DEC | OCT | HEX | BIN | Symbol | HTML Number | HTML Name | Description |
---|---|---|---|---|---|---|---|
32 | 040 | 20 | 00100000 | SP |   | Space | |
33 | 041 | 21 | 00100001 | ! | ! | ! | Exclamation mark |
34 | 042 | 22 | 00100010 | ' | " | " | Double quotes (or speech marks) |
35 | 043 | 23 | 00100011 | # | # | # | Number sign |
36 | 044 | 24 | 00100100 | $ | $ | $ | Dollar |
37 | 045 | 25 | 00100101 | % | % | % | Per cent sign |
38 | 046 | 26 | 00100110 | & | & | & | Ampersand |
39 | 047 | 27 | 00100111 | ' | ' | ' | Single quote |
40 | 050 | 28 | 00101000 | ( | ( | &lparen; | Open parenthesis (or open bracket) |
41 | 051 | 29 | 00101001 | ) | ) | &rparen; | Close parenthesis (or close bracket) |
42 | 052 | 2A | 00101010 | * | * | * | Asterisk |
43 | 053 | 2B | 00101011 | + | + | + | Plus |
44 | 054 | 2C | 00101100 | , | , | , | Comma |
45 | 055 | 2D | 00101101 | - | - | Hyphen-minus | |
46 | 056 | 2E | 00101110 | . | . | . | Period, dot or full stop |
47 | 057 | 2F | 00101111 | / | / | / | Slash or divide |
48 | 060 | 30 | 00110000 | 0 | 0 | Zero | |
49 | 061 | 31 | 00110001 | 1 | 1 | One | |
50 | 062 | 32 | 00110010 | 2 | 2 | Two | |
51 | 063 | 33 | 00110011 | 3 | 3 | Three | |
52 | 064 | 34 | 00110100 | 4 | 4 | Four | |
53 | 065 | 35 | 00110101 | 5 | 5 | Five | |
54 | 066 | 36 | 00110110 | 6 | 6 | Six | |
55 | 067 | 37 | 00110111 | 7 | 7 | Seven | |
56 | 070 | 38 | 00111000 | 8 | 8 | Eight | |
57 | 071 | 39 | 00111001 | 9 | 9 | Nine | |
58 | 072 | 3A | 00111010 | : | : | : | Colon |
59 | 073 | 3B | 00111011 | ; | ; | ; | Semicolon |
60 | 074 | 3C | 00111100 | < | < | < | Less than (or open angled bracket) |
61 | 075 | 3D | 00111101 | = | = | = | Equals |
62 | 076 | 3E | 00111110 | > | > | > | Greater than (or close angled bracket) |
63 | 077 | 3F | 00111111 | ? | ? | ? | Question mark |
64 | 100 | 40 | 01000000 | @ | @ | @ | At sign |
65 | 101 | 41 | 01000001 | A | A | Uppercase A | |
66 | 102 | 42 | 01000010 | B | B | Uppercase B | |
67 | 103 | 43 | 01000011 | C | C | Uppercase C | |
68 | 104 | 44 | 01000100 | D | D | Uppercase D | |
69 | 105 | 45 | 01000101 | E | E | Uppercase E | |
70 | 106 | 46 | 01000110 | F | F | Uppercase F | |
71 | 107 | 47 | 01000111 | G | G | Uppercase G | |
72 | 110 | 48 | 01001000 | H | H | Uppercase H | |
73 | 111 | 49 | 01001001 | I | I | Uppercase I | |
74 | 112 | 4A | 01001010 | J | J | Uppercase J | |
75 | 113 | 4B | 01001011 | K | K | Uppercase K | |
76 | 114 | 4C | 01001100 | L | L | Uppercase L | |
77 | 115 | 4D | 01001101 | M | M | Uppercase M | |
78 | 116 | 4E | 01001110 | N | N | Uppercase N | |
79 | 117 | 4F | 01001111 | O | O | Uppercase O | |
80 | 120 | 50 | 01010000 | P | P | Uppercase P | |
81 | 121 | 51 | 01010001 | Q | Q | Uppercase Q | |
82 | 122 | 52 | 01010010 | R | R | Uppercase R | |
83 | 123 | 53 | 01010011 | S | S | Uppercase S | |
84 | 124 | 54 | 01010100 | T | T | Uppercase T | |
85 | 125 | 55 | 01010101 | U | U | Uppercase U | |
86 | 126 | 56 | 01010110 | V | V | Uppercase V | |
87 | 127 | 57 | 01010111 | W | W | Uppercase W | |
88 | 130 | 58 | 01011000 | X | X | Uppercase X | |
89 | 131 | 59 | 01011001 | Y | Y | Uppercase Y | |
90 | 132 | 5A | 01011010 | Z | Z | Uppercase Z | |
91 | 133 | 5B | 01011011 | [ | [ | [ | Opening bracket |
92 | 134 | 5C | 01011100 | \ | \ | \ | Backslash |
93 | 135 | 5D | 01011101 | ] | ] | ] | Closing bracket |
94 | 136 | 5E | 01011110 | ^ | ^ | ^ | Caret - circumflex |
95 | 137 | 5F | 01011111 | _ | _ | _ | Underscore |
96 | 140 | 60 | 01100000 | ` | ` | ` | Grave accent |
97 | 141 | 61 | 01100001 | a | a | Lowercase a | |
98 | 142 | 62 | 01100010 | b | b | Lowercase b | |
99 | 143 | 63 | 01100011 | c | c | Lowercase c | |
100 | 144 | 64 | 01100100 | d | d | Lowercase d | |
101 | 145 | 65 | 01100101 | e | e | Lowercase e | |
102 | 146 | 66 | 01100110 | f | f | Lowercase f | |
103 | 147 | 67 | 01100111 | g | g | Lowercase g | |
104 | 150 | 68 | 01101000 | h | h | Lowercase h | |
105 | 151 | 69 | 01101001 | i | i | Lowercase i | |
106 | 152 | 6A | 01101010 | j | j | Lowercase j | |
107 | 153 | 6B | 01101011 | k | k | Lowercase k | |
108 | 154 | 6C | 01101100 | l | l | Lowercase l | |
109 | 155 | 6D | 01101101 | m | m | Lowercase m | |
110 | 156 | 6E | 01101110 | n | n | Lowercase n | |
111 | 157 | 6F | 01101111 | o | o | Lowercase o | |
112 | 160 | 70 | 01110000 | p | p | Lowercase p | |
113 | 161 | 71 | 01110001 | q | q | Lowercase q | |
114 | 162 | 72 | 01110010 | r | r | Lowercase r | |
115 | 163 | 73 | 01110011 | s | s | Lowercase s | |
116 | 164 | 74 | 01110100 | t | t | Lowercase t | |
117 | 165 | 75 | 01110101 | u | u | Lowercase u | |
118 | 166 | 76 | 01110110 | v | v | Lowercase v | |
119 | 167 | 77 | 01110111 | w | w | Lowercase w | |
120 | 170 | 78 | 01111000 | x | x | Lowercase x | |
121 | 171 | 79 | 01111001 | y | y | Lowercase y | |
122 | 172 | 7A | 01111010 | z | z | Lowercase z | |
123 | 173 | 7B | 01111011 | { | { | { | Opening brace |
124 | 174 | 7C | 01111100 | | | | | | | Vertical bar |
125 | 175 | 7D | 01111101 | } | } | } | Closing brace |
126 | 176 | 7E | 01111110 | ~ | ~ | ˜ | Equivalency sign - tilde |
127 | 177 | 7F | 01111111 | DEL |  | Delete |
2 位元組編碼:
等價
: 「◾◽??????」與「◽◽??????」皆合法且等價