編碼對應字符:javascript
✔:\u2714
✘:\u2718php
<script type="text/javascript"> var aaa = "\u2718"; document.write(aaa); </script>
測試ASCII碼的方法:
在記事本中,按住ALT鍵,同時用小鍵盤輸入十進制的ASCII碼,而後鬆手,就能夠看到效果了!html
ASCII值 | 控制字符 | ASCII值 | 控制字符 | ASCII值 | 控制字符 | ASCII值 | 控制字符 |
0 | NUT | 32 | (space) | 64 | @ | 96 | 、 |
1 | SOH | 33 | ! | 65 | A | 97 | a |
2 | STX | 34 | 」 | 66 | B | 98 | b |
3 | ETX | 35 | # | 67 | C | 99 | c |
4 | EOT | 36 | $ | 68 | D | 100 | d |
5 | ENQ | 37 | % | 69 | E | 101 | e |
6 | ACK | 38 | & | 70 | F | 102 | f |
7 | BEL | 39 | , | 71 | G | 103 | g |
8 | BS | 40 | ( | 72 | H | 104 | h |
9 | HT | 41 | ) | 73 | I | 105 | i |
10 | LF | 42 | * | 74 | J | 106 | j |
11 | VT | 43 | + | 75 | K | 107 | k |
12 | FF | 44 | , | 76 | L | 108 | l |
13 | CR | 45 | - | 77 | M | 109 | m |
14 | SO | 46 | . | 78 | N | 110 | n |
15 | SI | 47 | / | 79 | O | 111 | o |
16 | DLE | 48 | 0 | 80 | P | 112 | p |
17 | DCI | 49 | 1 | 81 | Q | 113 | q |
18 | DC2 | 50 | 2 | 82 | R | 114 | r |
19 | DC3 | 51 | 3 | 83 | S | 115 | s |
20 | DC4 | 52 | 4 | 84 | T | 116 | t |
21 | NAK | 53 | 5 | 85 | U | 117 | u |
22 | SYN | 54 | 6 | 86 | V | 118 | v |
23 | TB | 55 | 7 | 87 | W | 119 | w |
24 | CAN | 56 | 8 | 88 | X | 120 | x |
25 | EM | 57 | 9 | 89 | Y | 121 | y |
26 | SUB | 58 | : | 90 | Z | 122 | z |
27 | ESC | 59 | ; | 91 | [ | 123 | { |
28 | FS | 60 | < | 92 | \ | 124 | | |
29 | GS | 61 | = | 93 | ] | 125 | } |
30 | RS | 62 | > | 94 | ^ | 126 | ~ |
31 | US | 63 | ? | 95 | — | 127 | DEL |
NUL | VT 垂直製表 | SYN 空轉同步 |
SOH 標題開始 | FF 走紙控制 | ETB 信息組傳送結束 |
STX 正文開始 | CR 回車 | CAN 做廢 |
ETX 正文結束 | SO 移位輸出 | EM 紙盡 |
EOY 傳輸結束 | SI 移位輸入 | SUB 換置 |
ENQ 詢問字符 | DLE 空格 | ESC 換碼 |
ACK 認可 | DC1 設備控制1 | FS 文字分隔符 |
BEL 報警 | DC2 設備控制2 | GS 組分隔符 |
BS 退一格 | DC3 設備控制3 | RS 記錄分隔符 |
HT 橫向列表 | DC4 設備控制4 | US 單元分隔符 |
LF 換行 | NAK 否認 | DEL 刪除 |
鍵盤經常使用ASCII碼 | |
ESC鍵 | VK_ESCAPE (27) |
回車鍵: | VK_RETURN (13) |
TAB鍵: | VK_TAB (9) |
Caps Lock鍵: | VK_CAPITAL (20) |
Shift鍵: | VK_SHIFT ($10) |
Ctrl鍵: | VK_CONTROL (17) |
Alt鍵: | VK_MENU (18) |
空格鍵: | VK_SPACE ($20/32) |
退格鍵: | VK_BACK (8) |
左徽標鍵: | VK_LWIN (91) |
右徽標鍵: | VK_LWIN (92) |
鼠標右鍵快捷鍵: | VK_APPS (93) |
Insert鍵: | VK_INSERT (45) |
Home鍵: | VK_HOME (36) |
Page Up: | VK_PRIOR (33) |
PageDown: | VK_NEXT (34) |
End鍵: | VK_END (35) |
Delete鍵: | VK_DELETE (46) |
方向鍵(←): | VK_LEFT (37) |
方向鍵(↑): | VK_UP (38) |
方向鍵(→): | VK_RIGHT (39) |
方向鍵(↓): | VK_DOWN (40) |
F1鍵: | VK_F1 (112) |
F2鍵: | VK_F2 (113) |
F3鍵: | VK_F3 (114) |
F4鍵: | VK_F4 (115) |
F5鍵: | VK_F5 (116) |
F6鍵: | VK_F6 (117) |
F7鍵: | VK_F7 (118) |
F8鍵: | VK_F8 (119) |
F9鍵: | VK_F9 (120) |
F10鍵: | VK_F10 (121) |
F11鍵: | VK_F11 (122) |
F12鍵: | VK_F12 (123) |
Num Lock鍵: | VK_NUMLOCK (144) |
小鍵盤0: | VK_NUMPAD0 (96) |
小鍵盤1: | VK_NUMPAD0 (97) |
小鍵盤2: | VK_NUMPAD0 (98) |
小鍵盤3: | VK_NUMPAD0 (99) |
小鍵盤4: | VK_NUMPAD0 (100) |
小鍵盤5: | VK_NUMPAD0 (101) |
小鍵盤6: | VK_NUMPAD0 (102) |
小鍵盤7: | VK_NUMPAD0 (103) |
小鍵盤8: | VK_NUMPAD0 (104) |
小鍵盤9: | VK_NUMPAD0 (105) |
小鍵盤.: | VK_DECIMAL (110) |
小鍵盤*: | VK_MULTIPLY (106) |
小鍵盤+: | VK_MULTIPLY (107) |
小鍵盤-: | VK_SUBTRACT (109) |
小鍵盤/: | VK_DIVIDE (111) |
Pause Break鍵: | VK_PAUSE (19) |
Scroll Lock鍵: | VK_SCROLL (145) |
ASCII碼中:
第0~32號及第127號是控制字符,常見的控制符如:
007 = 07 = U+0007 : BELL 轉義符:\a 響鈴 008 = 08 = U+0008 : BACKSPACE 轉義符:\b 退格鍵 009 = 09 = U+0009 : HORIZONTAL TABULATION 轉義符:\t Tab鍵 010 = 0A = U+000A : LINE FEED 轉義符:\n 換行符 011 = 0B = U+000B : VERTICAL TABULATION 轉義符:\v 垂直 Tab 符 012 = 0C = U+000C : FORM FEED 轉義符:\f 換頁符 013 = 0D = U+000D : CARRIAGE RETURN 轉義符:\r 回車鍵 027 = 1B = U+001B : ESCAPE 轉義符:\e Esc 鍵java
第33~126號是字符,其中第48~57號爲0~9十個阿拉伯數字;65~90號爲26個大寫英文字母,97~122號爲26個小寫英文字母,其他的是一些標點符號、運算符號等。web
PHP中的應用:
ord():返回字符串第一個字符的 ASCII 值。
chr():從指定的 ASCII 值返回字符。數組
PHP字符編碼ASCII 、GB23十二、GBK、UTF-8解釋:
詳細解釋參考:http://bbs.php100.com/read.php?tid=295220測試
中文編碼範圍E0~EF (UTF-8)
80~FF (GBK)ui
ASCII碼錶及擴展ASCII碼錶詳解:編碼
ASCII碼錶能夠當作由三部分組成: 第一部分由00H到1FH共32個,通常用來通信或做爲控制之用,有些能夠顯示在屏幕上,有些則不能顯示,但能看到其效果(如換行、退格).以下表:
spa
第二部分是由20H到7FH共96個,這95個字符是用來表示阿拉伯數字、英文字母大小寫和下劃線、括號等符號,均可以顯示在屏幕上.以下表:
ASCII 碼 |
字符 |
|
ASCII 碼 |
字符 |
|
ASCII 碼 |
字符 |
|
ASCII 碼 |
字符 |
||||
十進制 |
十六進制 |
十進制 |
十六進制 |
十進制 |
十六進制 |
十進制 |
十六進制 |
|||||||
032 |
20 |
|
|
056 |
38 |
8 |
|
080 |
50 |
P |
|
104 |
68 |
h |
033 |
21 |
! |
|
057 |
39 |
9 |
|
081 |
51 |
Q |
|
105 |
69 |
i |
034 |
22 |
" |
|
058 |
3A |
: |
|
082 |
52 |
R |
|
106 |
6A |
j |
035 |
23 |
# |
|
059 |
3B |
; |
|
083 |
53 |
S |
|
107 |
6B |
k |
036 |
24 |
$ |
|
060 |
3C |
< |
|
084 |
54 |
T |
|
108 |
6C |
l |
037 |
25 |
% |
|
061 |
3D |
= |
|
085 |
55 |
U |
|
109 |
6D |
m |
038 |
26 |
& |
|
062 |
3E |
> |
|
086 |
56 |
V |
|
110 |
6E |
n |
039 |
27 |
' |
|
063 |
3F |
? |
|
087 |
57 |
W |
|
111 |
6F |
o |
040 |
28 |
( |
|
064 |
40 |
@ |
|
088 |
58 |
X |
|
112 |
70 |
p |
041 |
29 |
) |
|
065 |
41 |
A |
|
089 |
59 |
Y |
|
113 |
71 |
q |
042 |
2A |
* |
|
066 |
42 |
B |
|
090 |
5A |
Z |
|
114 |
72 |
r |
043 |
2B |
+ |
|
067 |
43 |
C |
|
091 |
5B |
[ |
|
115 |
73 |
s |
044 |
2C |
, |
|
068 |
44 |
D |
|
092 |
5C |
\ |
|
116 |
74 |
t |
045 |
2D |
- |
|
069 |
45 |
E |
|
093 |
5D |
] |
|
117 |
75 |
u |
046 |
2E |
. |
|
070 |
46 |
F |
|
094 |
5E |
^ |
|
118 |
76 |
v |
047 |
2F |
/ |
|
071 |
47 |
G |
|
095 |
5F |
_ |
|
119 |
77 |
w |
048 |
30 |
0 |
|
072 |
48 |
H |
|
096 |
60 |
` |
|
120 |
78 |
x |
049 |
31 |
1 |
|
073 |
49 |
I |
|
097 |
61 |
a |
|
121 |
79 |
y |
050 |
32 |
2 |
|
074 |
4A |
J |
|
098 |
62 |
b |
|
122 |
7A |
z |
051 |
33 |
3 |
|
075 |
4B |
K |
|
099 |
63 |
c |
|
123 |
7B |
{ |
052 |
34 |
4 |
|
076 |
4C |
L |
|
100 |
64 |
d |
|
124 |
7C |
| |
053 |
35 |
5 |
|
077 |
4D |
M |
|
101 |
65 |
e |
|
125 |
7D |
} |
054 |
36 |
6 |
|
078 |
4E |
N |
|
102 |
66 |
f |
|
126 |
7E |
~ |
055 |
37 |
7 |
|
079 |
4F |
O |
|
103 |
67 |
g |
|
127 |
7F |
第三部分由80H到0FFH共128個字符,通常稱爲"擴充字符",這128個擴充字符是由IBM制定的,並不是標準的ASCII碼.這些字符是用來表示框線、音標和其它歐洲非英語系的字母.
由獲取漢字首字母引發的gb2312編碼表的思考
GB2312 字符集和編碼說明(碼錶見http://www.cnblogs.com/thinksasa/p/3956458.html)
(1)GB2312 字符集
GB2312 是漢字字符集和編碼的代號,中文全稱爲「信息交換用漢字編碼字符集」,由中華人民共和國國家標準總局發佈,一九八一年五月一日實施。GB 是「國標」 二字的漢語拼音縮寫。
(2)GB2312 字符集 (character set) 只收錄簡化字漢字,以及通常經常使用字母和符號,主要通行於中國大陸地區和新加坡等地。
(3)GB2312 共收錄有 7445 個字符,其中簡化漢字 6763 個,字母和符號 682 個。
(4)GB2312 將所收錄的字符分爲 94 個區,編號爲 01 區至 94 區;每一個區收錄 94 個字符,編號爲 01 位至 94 位。GB2312 的每個字符都由與其惟一對應的區號和位號所肯定。例如:漢字「啊」,編號爲 16 區 01 位。
(5)GB2312 字符集的區位分佈表:
區號 字數 字符類別
01 94 通常符號
02 72 順序號碼
03 94 拉丁字母
04 83 日文假名
05 86 Katakana
06 48 希臘字母
07 66 俄文字母
08 63 漢語拼音符號
09 76 圖形符號
10-15 備用區
16-55 3755 一級漢字,以拼音爲序
56-87 3008 二級漢字,以筆劃爲序
88-94 備用區
GB2312 編碼
舉例來講,「啊」字是GB2312之中的第一個漢字,它的區位碼就是1601。字節編碼,一般採用EUC儲存方法,以便兼容於ASCII。每一個漢字及符號以兩個字節來表示 。第一個字節稱爲「高位字節」,第二個字節稱爲「低位字節」。 「高位字節」使用了0xA1-0xF7(把01-87區的區號加上0xA0),「低位字節」使用了0xA1-0xFE(把01-94加上0xA0)。例如 「啊」字在大多數程序中,會以0xB0A1儲存(與區位碼對比:0xB0=0xA0+16,0xA1=0xA0+1)。
因此GB2312編碼中漢字區碼的十進制是從176到247,位碼是從161到255.之因此存儲了6763小於72(一級漢字和二級漢字所佔的區)*94(每一個區有94個漢字)=6768,是由於在區碼爲215,位碼爲250-254之間共五個編碼沒有漢字編碼,因此6768-5=6763個
GB2312 與 Unicode 的關係
GB2312 字符集是 Unicode 字符集的一個子集。這也就是說,GB2312 所收錄的每個字符都收錄在 Unicode 之中。可是 GB2312 編碼和 Unicode 編碼確沒有什麼相同之處。同一個漢字,它的 GB2312 編碼和 Unicode 編碼確絕不相同。例如:漢字「啊」,它的 GB2312 編碼爲 0xB0A1,可是它的Unicode 編碼爲 0x554A。
舉例:
高位:B0=A0+16(區碼),低位:A1=A0+1(位碼)
因此編碼爲B0A1,
計算的十進制值:176(B0的十進制值)*256(高八位)+161(A1的十進制值)=45217
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <?php function getfirstchar($s0){ $fchar = ord($s0{0}); if($fchar >= ord("A") and $fchar <= ord("z") )return strtoupper($s0{0}); $s1 = iconv("UTF-8","gb2312", $s0); $s2 = iconv("gb2312","UTF-8", $s1); if($s2 == $s0){$s = $s1;}else{$s = $s0;} $asc = ord($s{0}) * 256 + ord($s{1}) - 65536; if($asc >= -20319 and $asc <= -20284) return "A"; if($asc >= -20283 and $asc <= -19776) return "B"; if($asc >= -19775 and $asc <= -19219) return "C"; if($asc >= -19218 and $asc <= -18711) return "D"; if($asc >= -18710 and $asc <= -18527) return "E"; if($asc >= -18526 and $asc <= -18240) return "F"; if($asc >= -18239 and $asc <= -17760) return "G"; if($asc >= -17759 and $asc <= -17248) return "H"; if($asc >= -17247 and $asc <= -17418) return "I"; if($asc >= -17417 and $asc <= -16475) return "J"; if($asc >= -16474 and $asc <= -16213) return "K"; if($asc >= -16212 and $asc <= -15641) return "L"; if($asc >= -15640 and $asc <= -15166) return "M"; if($asc >= -15165 and $asc <= -14923) return "N"; if($asc >= -14922 and $asc <= -14915) return "O"; if($asc >= -14914 and $asc <= -14631) return "P"; if($asc >= -14630 and $asc <= -14150) return "Q"; if($asc >= -14149 and $asc <= -14091) return "R"; if($asc >= -14090 and $asc <= -13319) return "S"; if($asc >= -13318 and $asc <= -12839) return "T"; if($asc >= -12838 and $asc <= -12557) return "W"; if($asc >= -12556 and $asc <= -11848) return "X"; if($asc >= -11847 and $asc <= -11056) return "Y"; if($asc >= -11055 and $asc <= -10247) return "Z"; return null; } function pinyin1($zh){ $ret = ""; $s1 = iconv("UTF-8","gb2312", $zh); $s2 = iconv("gb2312","UTF-8", $s1); if($s2 == $zh){$zh = $s1;} for($i = 0; $i < strlen($zh); $i++){ $s1 = substr($zh,$i,1); $p = ord($s1); if($p > 160){ $s2 = substr($zh,$i++,2); $ret .= getfirstchar($s2); }else{ $ret .= $s1; } } return $ret; } echo "這是中文字符串<br/>"; echo pinyin1("啊"); ?>
由此能夠得出結論: 將字符串轉使用GB2312編碼後,符合ASCII編碼的每一個字符都用1個字節 (byte) 表示,符合GB2312編碼的每一個字符都用2個字節 (byte) 表示。 如:「javaGB2312編碼」的字符串,「javaGB2312」的字符串長度爲:10,「編碼」的字符串的長度爲:4,因此字符串的長度爲:14。 當由字節數組轉換爲GB2312編碼的字符時,若是轉換的字節ASCII的值ord($str)是:0 到127,轉換就用ASCII碼錶示,則用1個字節表示一個字符;若是轉換的字節ASCII的值是:161到255,轉換就用GB2312編碼表示,則用2個字節表示一個字符。