千家信息网

C#开发中编码问题的示例分析

发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,这篇文章给大家分享的是有关C#开发中编码问题的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。System.Text提供了Encoding的抽象类,这个类提供字符串编
千家信息网最后更新 2024年10月21日C#开发中编码问题的示例分析

这篇文章给大家分享的是有关C#开发中编码问题的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

System.Text提供了Encoding的抽象类,这个类提供字符串编码的方法。常用的编码方式主要有ASCII,Unicode,UTF8(Unicode编码的一种)。

Unicode有四种编码格式,UTF-8, UTF-16,UTF-32,UTF-7。

字符编码类,ASCIIEncoding ,UTF7Encoding,UnicodeEncoding,UTF32Encoding。

下面对ASCII和Unicode编码进行对比,废话不说,先上代码:

这是ASCII编码、解码。

static void Main(string[] args)  {   string temp = "Hello World!";   Console.WriteLine("Original String:{0}", temp);      byte[] tempBytes = System.Text.Encoding.ASCII.GetBytes(temp);   Console.WriteLine("Bytes Array:{0}", BitConverter.ToString(tempBytes));   BigInteger integer = new BigInteger(tempBytes);   Console.WriteLine("BigInteger:{0}", integer);   string res = System.Text.Encoding.ASCII.GetString(tempBytes);   Console.WriteLine("Convert Back String:{0}", res);   Console.ReadKey();  }

运行结果如下:

Original String:Hello World!Bytes Array:48-65-6C-6C-6F-20-57-6F-72-6C-64-21BigInteger:10334410032597741434076685640Convert Back String:Hello World!

很正常,对吧?但是,如果输入的字符串是中文(或者其他非ASCII表中的字符),情况会怎么样呢?

改变上面的程序代码

string temp = "你好,世界!";

运行结果如下:

Original String:你好,世界!Bytes Array:3F-3F-3F-3F-3F-3FBigInteger:69540876599103Convert Back String:??????

如果把编码格式换成UTF8,依然重复上面的测试过程。

static void Main(string[] args)  {   string temp = "你好,世界!";   Console.WriteLine("Original String:{0}", temp);      byte[] tempBytes = System.Text.Encoding.UTF8.GetBytes(temp);   Console.WriteLine("Bytes Array:{0}", BitConverter.ToString(tempBytes));   BigInteger integer = new BigInteger(tempBytes);   Console.WriteLine("BigInteger:{0}", integer);   string res = System.Text.Encoding.UTF8.GetString(tempBytes);   Console.WriteLine("Convert Back String:{0}", res);   Console.ReadKey();  }

运行结果如下:

Original String:你好,世界!Bytes Array:E4-BD-A0-E5-A5-BD-EF-BC-8C-E4-B8-96-E7-95-8C-EF-BC-81BigInteger:-10998968812899434720462615123889939386679836Convert Back String:你好,世界!
Original String:Hello World!Bytes Array:48-65-6C-6C-6F-20-57-6F-72-6C-64-21BigInteger:10334410032597741434076685640Convert Back String:Hello World!

通过对比,我们发现除了兼容中文和其他语言外,似乎没有太大区别。如果把编码集换成Unicode,中英文字符编码的不同就会很容易看出来了。

Original String:Hello World!Bytes Array:48-00-65-00-6C-00-6C-00-6F-00-20-00-57-00-6F-00-72-00-6C-00-64-00-21-00BigInteger:3160918205608148134863399242437668999277801104545742920Convert Back String:Hello World!
Original String:你好,世界!Bytes Array:60-4F-7D-59-0C-FF-16-4E-4C-75-01-FFBigInteger:-307722159543719876182061216Convert Back String:你好,世界!

如果不考虑其他情况。通过对比结果,我们发现:

1、ASCII只能处理英文和英文符号,具体请参考ASCII字符表

2、Unicode可以处理全球所有语言符号

3、Unicode处理英文时,会在每个字节后面加一个字节0x00,比ASCII多出一倍的长度;处理中文时,编码较短。

4、UTF8处理中文时比Unicode编码长,处理英文时与ASCII一样。

结论,由于现在存储介质越来越不值钱,在处理有非英文字符时,编码格式应该选择Unicode(或其子集UTF8等的任意一种编码格式),只有在确定程序只会处理英文的时候,才能选择ASCII编码。

感谢各位的阅读!关于"C#开发中编码问题的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

编码 处理 世界 你好 字符 英文 格式 结果 中文 运行 示例 问题 C# 分析 开发 内容 字符串 字节 情况 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳云盟网络技术有限公司 铁王座手游数据库 服务器虚拟化管理方案有哪些 服务器怎么代理游戏 长沙丛云互联网科技有限公司 黄南州网络技术产品介绍 松江区系统软件开发流程 黄山市文旅局网络安全培训 网络技术的诞生 网络技术员考试题目 数据库怎么查看落库情况定位问题 东城服务器搬迁报价单 省网络安全和信息智库 泉州5g软件开发工程师招聘 确保宗教领域网络安全 银行的业务系统 软件开发 缓存服务器厂家 郑州国际网络安全教育 sql数据库中布尔值用什么数 如何学习网络安全法律法规 数据库备份到另一台电脑详细步骤 mysql数据库实例名 负责银行软件开发 获取数据库某个字段的长度 过火伴奏软件开发 广东网络安全等级测评单位 数据库技术计算机三级考试 学计算机软件开发培训多少钱 gps数据库设计 幼儿园校园网络安全专项整治报告
0