字符编码
字符编码有两个概念,一个是字符集,一个是编码
字符集,即在特定的字符集名称下收录的所有字符的集合,如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