字符编码

字符编码有两个概念,一个是字符集,一个是编码

字符集,即在特定的字符集名称下收录的所有字符的集合,如gb2312,gbk,unicode,ascii

 gb2312码表

code  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
B0A0     啊 阿 埃 挨 哎 唉 哀 皑 癌 蔼 矮 艾 碍 爱 隘
B0B0  鞍 氨 安 俺 按 暗 岸 胺 案 肮 昂 盎 凹 敖 熬 翱
B0C0  袄 傲 奥 懊 澳 芭 捌 扒 叭 吧 笆 八 疤 巴 拔 跋
B0D0  靶 把 耙 坝 霸 罢 爸 白 柏 百 摆 佰 败 拜 稗 斑
B0E0  班 搬 扳 般 颁 板 版 扮 拌 伴 瓣 半 办 绊 邦 帮
B0F0  梆 榜 膀 绑 棒 磅 蚌 镑 傍 谤 苞 胞 包 褒 剥 

Ascii码表

7 Ascii 55
8 Ascii 56
9 Ascii 57
: Ascii 58
; Ascii 59
< Ascii 60
= Ascii 61
> Ascii 62
? Ascii 63
@ Ascii 64
A Ascii 65
B Ascii 66
C Ascii 67

 

字符编码,把给定的字符,按照字符集下对应的数字,依据其字符集的编码规则(补码,移位等),转换成8位的二进制表示形式([01011100] [00010110])。或1个或2个或3个或4个字节。存于硬盘。

unicode是字符集,收录了全球所有。utf8,utf7,utf32,utf16则是此字符集下的编码规则。

gb2312,ascii等,即代表了字符集,也代表了其固有的编码规则。

 

System.Text.Encoding.Unicode.GetBytes("中国")
{byte[4]}
    [0]: 45
    [1]: 78
    [2]: 253
    [3]: 86
System.Text.Encoding.UTF8.GetBytes("中国")
{byte[6]}
    [0]: 228
    [1]: 184
    [2]: 173
    [3]: 229
    [4]: 155
    [5]: 189

System.Text.Encoding.GetEncoding("gb2312").GetBytes("中国")
{byte[4]}
    [0]: 214
    [1]: 208
    [2]: 185
    [3]: 250


System.Text.Encoding.Default.GetBytes("中国")//default与当前操作系统的语言相关,因为我本机操作系统是中文,故与gb2312结果相同
{byte[4]}
    [0]: 214
    [1]: 208
    [2]: 185
    [3]: 250


System.Text.Encoding.ASCII.GetBytes("中国")

{byte[2]}
    [0]: 63
    [1]: 63
                                       //为什么是63?ascii码不是没有中文吗?经查找ascii码表,得知63为'?',估计是其编码规则约定对于不理解的字符一律赋值63

posted on 2011-06-17 19:56  lucaszong  阅读(290)  评论(0编辑  收藏  举报

导航