编码对应字符:
✔:u2714
✘:u2718
<script type="text/javascript"> var aaa = "u2718"; document.write(aaa); </script>
测试ASCII码的方法:
在记事本中,按住ALT键,同时用小键盘输入十进制的ASCII码,然后松手,就可以看到效果了!
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 转义符: 退格键 009 = 09 = U+0009 : HORIZONTAL TABULATION 转义符: Tab键 010 = 0A = U+000A : LINE FEED 转义符:
换行符 011 = 0B = U+000B : VERTICAL TABULATION 转义符:v 垂直 Tab 符 012 = 0C = U+000C : FORM FEED 转义符:f 换页符 013 = 0D = U+000D : CARRIAGE RETURN 转义符:
回车键 027 = 1B = U+001B : ESCAPE 转义符:e Esc 键
第33~126号是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余的是一些标点符号、运算符号等。
PHP中的应用:
ord():返回字符串第一个字符的 ASCII 值。
chr():从指定的 ASCII 值返回字符。
PHP字符编码ASCII 、GB2312、GBK、UTF-8解释:
详细解释参考:http://bbs.php100.com/read.php?tid=295220
中文编码范围E0~EF (UTF-8)
80~FF (GBK)
ASCII码表及扩展ASCII码表详解:
ASCII码表可以看成由三部分组成: 第一部分由00H到1FH共32个,一般用来通讯或作为控制之用,有些可以显示在屏幕上,有些则不能显示,但能看到其效果(如换行、退格).如下表:
第二部分是由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个字节表示一个字符。