学习笔记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长度来区分是否为附件的内容。
引起的长度也会有所不同
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长度来区分是否为附件的内容。
相关文章推荐
- 重温Servlet学习笔记--编码问题
- javaweb 学习笔记001编码问题
- Python学习笔记:中文编码问题
- 【编码】字符集与编码意义与关系、java编程编码问题相关学习笔记
- 学习笔记第四篇之python编码问题
- [读书笔记]C#学习笔记八:StringBuilder与String详解及参数传递问题剖析
- java web 学习笔记 编码问题总结
- [学习笔记]学C#遇到的几个问题
- C# in Depth Third Edition 学习笔记-- C#2.0: 解决C#1.0的问题 1 泛型
- python机器学习及实践学习笔记2-编码问题
- 【JAVAWEB学习笔记】24_filter实现自动登录和解决全局的编码问题
- java web 学习笔记 编码问题总结
- C#学习笔记6:各种字符串问题
- (学习笔记)C++底层dll C#调用问题汇总:结构体的不同之处
- [读书笔记]C#学习笔记八:StringBuilder与String详解及参数传递问题剖析
- [读书笔记]C#学习笔记八:StringBuilder与String详解及参数传递问题剖析
- C#学习笔记 线程同步问题
- Python学习笔记,5,字符串和编码问题
- windows编程学习笔记(7)ASCII与Unicode编码问题
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)