stdlf
分类:
2010-03-19 11:08:59
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 类型,是非常好的习惯,严重推荐!