您的位置:首页 > 编程语言 > C#

学习笔记4 C# 编码问题

2009-07-29 17:08 369 查看
字符串和二进制流直接的转换,按照不同的编码方式转换
引起的长度也会有所不同
string str = "中国abc";

byte[] buffer0 = Encoding.ASCII.GetBytes(str);
byte[] buffer1 = Encoding.Unicode.GetBytes(str);
byte[] buffer2 = Encoding.UTF8.GetBytes(str);
byte[] buffer3 = Encoding.GetEncoding("GB2312").GetBytes(str);
byte[] buffer3 = Encoding.GetEncoding("GB18030").GetBytes(str);
二进制流,转回String
string str2 = Encoding.UTF8.GetString(buffer2);
Console.WriteLine(str2);

任何类型,总是到最后体现为多少字节
整数:
int age = 99; //32位有符合整型
ulong uL = 19800UL; //64位无符号整型
网络流中,如果发1000个字节,最后往往会发1004个字节,
前面4位用来表示总共有多少字节

int k = 1;
byte[] kBytes = BitConverter.GetBytes(k);

for (int i = 0; i < kBytes.Length; i++)
{
Console.Write(kBytes[i]);
} //有疑问

---
Base64 国际通用编码方式
电子邮件常常会使用

在XMl中, <> 是它的特殊字符 ,

在数据库中,
如MySql ,nChar 保存方式为unicode则存什么都是原样的。
如果用char,最好要严格标明是哪种编码方式的才好

Base64 特点 没有特殊字符
A-Z, a-z, 0-9, + / =
26 26 10 3 总共: 65个
除=之外,共64个 。 所以称之为 Base64
=号,一般出现在最后作为补充用,或者根本就不用。

XML为UTF-8 方式
如:
string str = "上海<中山路>";
string XMLStr = string.Format("<text>{0}</text>",str);
如上如果出现在XML中,将无法解析
string encodeString = conver.ToBase64String(Encoding.UTF8.GetBytes(s));
string XMLStr = string.Format("<text>{0}</text>",encodeString);
变成Base64方式,长度增加33%, 即为原来的4/3

string str = "上海<中山路>";
//string strXMl = string.Format("<text>{0}</text>",str);

byte[] bytes = Encoding.UTF8.GetBytes(str);
string encodeStr = Convert.ToBase64String(bytes);
string decodeString = Encoding.UTF8.GetString(bytes);
Console.WriteLine(decodeString);string decodeString = Encoding.UTF8

Base64编译的过程,看Notebook。个人感觉不难,但比较烦。

byte[] bytes = BitConverter.GetBytes(true);
Console.WriteLine(bytes.Length);
bytes[0] = 1; //false
bytes[1] = 0; //true 内存中显示为0

Convert.ToBase64String(null, Base64FormattingOptions.InsertLineBreaks);
Base64FormattingOptions.InsertLineBreaks: 是否为76个字节显示
Base64, 在网络中用的很多。 电子邮件是明文显示的,附件以二进制流以76长度来区分是否为附件的内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐