编码对应字符:
✔:\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 转义符:\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 键
第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个字节表示一个字符。