ASCII(美国信息交换标准编码)表 |
|||||||||||
字符 |
ASCII代码 |
字符 |
ASCII代码 |
字符 |
ASCII代码 | ||||||
二进制 |
十进制 |
十六进制 |
二进制 |
十进制 |
十六进制 |
二进制 |
十进制 |
十六进制 | |||
回车 |
0001101 |
13 |
0D 1B 20 21 22 23 24 |
? |
0111111 1000000 1000001 1000010 1000011 1000100 1000101 |
63 64 65 66 67 68 69 |
3F 40 41 42 43 44 45 |
a b c d e f g |
1100001 1100010 1100011 1100100 1100101 1100110 1100111 |
97 98 99 100 101 102 103 |
61 62 63 64 65 66 67 |
% |
0100101 |
37 |
25 26 27 28 29 2A 2B |
F G H I J K L |
1000110 1000111 1001000 1001001 1001010 1001011 1001100 |
70 71 72 73 74 75 76 |
46 47 48 49 4A 4B 4C |
h i j k l m n |
1101000 1101001 1101010 1101011 1101100 1101101 1101110 |
104 105 106 107 108 109 110 |
68 69 6A 6B 6C 6D 6E |
, |
0101100 |
44 |
2C 2D 2E 2F 30 31 32 |
M N O P Q R S |
1001101 1001110 1001111 1010000 1010001 1010010 1010011 |
77 78 79 80 81 82 83 |
4D 4E 4F 50 51 52 53 |
o p q r s t u |
1101111 1110000 1110001 1110010 1110011 1110100 1110101 |
111 112 113 114 115 116 117 |
6F 70 71 72 73 74 75 |
3 4 5 6 7 8 |
0110011 0110100 0110101 0110110 0110111 0111000 |
51 52 53 54 55 56 |
33 34 35 36 37 38 |
T U V W X Y |
1010100 1010101 1010110 1010111 1011000 1011001 |
84 85 86 87 88 89 |
54 55 56 57 58 59 |
v w x y z |
1110110 1110111 1111000 1111001 1111010 |
118 119 120 121 122 |
76 77 78 79 7A |
9 : ; < = > |
0111001 0111010 0111011 0111100 0111101 0111110 |
57 58 59 60 61 62 |
39 3A 3B 3C 3D 3E |
Z [ \ ] ^ - |
1011010 1011011 1011100 1011101 1011110 1011111 |
90 91 92 93 94 95 |
5A 5B 5C 5D 5E 5F |
{ | } ~ |
1111011 1111100 1111101 1111110 |
123 124 125 126 |
7B 7C 7D 7E |
ASCII字符表:
扩展ASCII字符表:
计算机发明后,为了在计算机中表示字符,人们制定了一种编码,叫ASCII码。ASCII码由一个字节中的7位(bit)表示,范围是0x00 - 0x7F 共128个字符。他们以为这128个数字就足够表示abcd....ABCD....1234 这些字符了。
咳......说英语的人就是“笨”!后来他们突然发现,如果需要按照表格方式打印这些字符的时候,缺少了“制表符”。于是又扩展了ASCII的定义,使用一个字节的全部8位(bit)来表示字符了,这就叫扩展ASCII码。范围是0x00 - 0xFF 共256个字符。
咳......说中文的人就是聪明!中国人利用连续2个扩展ASCII码的扩展区域(0xA0以后)来表示一个汉字,该方法的标准叫GB-2312。后来,日文、韩文、阿拉伯文、台湾繁体(BIG-5)......都使用类似的方法扩展了本地字符集的定义,现在统一称为 MBCS 字符集(多字节字符集)。这个方法是有缺陷的,因为各个国家地区定义的字符集有交集,因此使用GB-2312的软件,就不能在BIG-5的环境下运行(显示乱码),反之亦然。
咳......说英语的人终于变“聪明”一些了。为了把全世界人民所有的所有的文字符号都统一进行编码,于是制定了UNICODE标准字符集。UNICODE 使用2个字节表示一个字符(unsigned shor int、WCHAR、_wchar_t、OLECHAR)。这下终于好啦,全世界任何一个地区的软件,可以不用修改地就能在另一个地区运行了。虽然我用 IE 浏览日本网站,显示出我不认识的日文文字,但至少不会是乱码了。UNICODE 的范围是 0x0000 - 0xFFFF 共6万多个字符,其中光汉字就占用了4万多个。嘿嘿,中国人赚大发了:0)
在程序中使用各种字符集的方法:
const char * p = "Hello"; // 使用 ASCII 字符集 const char * p = "你好"; // 使用 MBCS 字符集,由于 MBCS 完全兼容 ASCII,多数情况下,我们并不严格区分他们 LPCSTR p = "Hello,你好"; // 意义同上 const WCHAR * p = L"Hello,你好"; // 使用 UNICODE 字符集 LPCOLESTR p = L"Hello,你好"; // 意义同上 // 如果预定义了_UNICODE,则表示使用UNICODE字符集;如果定义了_MBCS,则表示使用 MBCS const TCHAR * p = _T("Hello,你好"); LPCTSTR p = _T("Hello,你好"); // 意义同上在上面的例子中,T是非常有意思的一个符号(TCHAR、LPCTSTR、LPTSTR、_T()、_TEXT()...),它表示使用一种中间类型,既不明确表示使用 MBCS,也不明确表示使用 UNICODE。那到底使用哪种字符集那?嘿嘿......编译的时候决定吧。设置条件编译的方式是:VC6中,"Project\Settings...\C/C++卡片 Preprocessor definitions" 中添加或修改 _MBCS、_UNICODE;VC.NET中,"项目\属性\配置属性\常规\字符集"然后用组合窗进行选择。使用 T 类型,是非常好的习惯,严重推荐!