ASSIC码对照表

编码对应字符:

:\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 

  

080 

50 

  

104 

68 

033 

21 

  

057 

39 

  

081 

51 

  

105 

69 

034 

22 

  

058 

3A 

  

082 

52 

  

106 

6A 

035 

23 

  

059 

3B 

  

083 

53 

  

107 

6B 

036 

24 

  

060 

3C 

  

084 

54 

  

108 

6C 

037 

25 

  

061 

3D 

  

085 

55 

  

109 

6D 

038 

26 

  

062 

3E 

  

086 

56 

  

110 

6E 

039 

27 

  

063 

3F 

  

087 

57 

  

111 

6F 

040 

28 

  

064 

40 

  

088 

58 

  

112 

70 

041 

29 

  

065 

41 

  

089 

59 

  

113 

71 

042 

2A 

  

066 

42 

  

090 

5A 

  

114 

72 

043 

2B 

  

067 

43 

  

091 

5B 

  

115 

73 

044 

2C 

  

068 

44 

  

092 

5C 

  

116 

74 

045 

2D 

  

069 

45 

  

093 

5D 

  

117 

75 

046 

2E 

  

070 

46 

  

094 

5E 

  

118 

76 

047 

2F 

  

071 

47 

  

095 

5F 

  

119 

77 

048 

30 

  

072 

48 

  

096 

60 

  

120 

78 

049 

31 

  

073 

49 

  

097 

61 

  

121 

79 

050 

32 

  

074 

4A 

  

098 

62 

  

122 

7A 

051 

33 

  

075 

4B 

  

099 

63 

  

123 

7B 

052 

34 

  

076 

4C 

  

100 

64 

  

124 

7C 

053 

35 

  

077 

4D 

  

101 

65 

  

125 

7D 

054 

36 

  

078 

4E 

  

102 

66 

  

126 

7E 

055 

37 

  

079 

4F 

  

103 

67 

  

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个字节表示一个字符。


posted @ 2014-01-23 10:45  洒洒  阅读(44269)  评论(0编辑  收藏  举报