今天上csdn论坛时看到一个关于utf-8,utf-7......几种编码的区别,说法不一,虽然经常使用这几种编码,咋一想,还真有点模糊,于是百度一下,找了一些相关文章,总结如下(仅代表个人观点):
unicode :
每个字符2个字节
utf-8:
英文字符即能用8位表示的字符用1个字节表示
能用8 到 11位 表示的字符用2个字节表示
能用12 到 16 位表示的字符用2个字节表示
utf-7:
遇英语字母、数字和常见符号直接用8位表示(不过我也没搞清楚什么时常见符号,如"&"符就会当成非常见字符。。。)
其他的符号串用+-来标记始终,如"a中中a"
在遇到中时会如下编码
a的编码 +的编码 中的编码 中的编码 -的编码 a的编码
共6个字节。。。
测试代码
a
=
"
a中中a
"
;
byte [] bb = Encoding.UTF8.GetBytes(a);
Console.WriteLine( " 长度: " + bb.Length);
foreach ( byte bbb in bb)
... {
Console.Write(bbb.ToString()+" ");
}
bb = Encoding.UTF7.GetBytes(a);
Console.WriteLine();
Console.WriteLine( " 长度: " + bb.Length);
foreach ( byte bbb in bb)
... {
Console.Write(bbb.ToString() + " ");
}
bb = Encoding.ASCII.GetBytes(a);
Console.WriteLine();
Console.WriteLine( " 长度: " + bb.Length);
foreach ( byte bbb in bb)
... {
Console.Write(bbb.ToString() + " ");
}
Console.ReadLine();
byte [] bb = Encoding.UTF8.GetBytes(a);
Console.WriteLine( " 长度: " + bb.Length);
foreach ( byte bbb in bb)
... {
Console.Write(bbb.ToString()+" ");
}
bb = Encoding.UTF7.GetBytes(a);
Console.WriteLine();
Console.WriteLine( " 长度: " + bb.Length);
foreach ( byte bbb in bb)
... {
Console.Write(bbb.ToString() + " ");
}
bb = Encoding.ASCII.GetBytes(a);
Console.WriteLine();
Console.WriteLine( " 长度: " + bb.Length);
foreach ( byte bbb in bb)
... {
Console.Write(bbb.ToString() + " ");
}
Console.ReadLine();