学习笔记4 C# 编码问题

字符串和二进制流直接的转换,按照不同的编码方式转换
引起的长度也会有所不同
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长度来区分是否为附件的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值