c#字符串编码编码(encoding)使用方法示例

c#字符串编码编码(encoding)使用方法示例

C#中,字符串编码(encoding)是将文字转换成二进制数据(byte数组),输出或读取到文件或设备中的方式。本文将介绍C#中字符串编码的使用方法及示例说明。

1. 编码与解码

编码指将字符串转换成二进制数据,而解码则是将二进制数据转换成字符串。在C#中,编码和解码都是通过Encoding类实现的。

以下是一个编码和解码的示例:

string str = "hello World!";
byte[] bytes = Encoding.Default.GetBytes(str); // 编码
string base64 = Convert.ToBase64String(bytes); // 转换成 Base64 编码格式 

Console.WriteLine("编码结果: " + base64); // 输出:编码结果: aGVsbG8gV29ybGQh

byte[] decodeBytes = Convert.FromBase64String(base64); // 将 Base64 编码字符串转换成二进制数组
string decodeStr = Encoding.Default.GetString(decodeBytes); // 解码
Console.WriteLine("解码结果: " + decodeStr); // 输出:解码结果: hello World!

上面的示例先使用Encoding.Default方法将字符串编码成二进制数组,再通过Convert.ToBase64String方法将二进制数组转换成Base64格式的编码字符串。然后再通过Convert.FromBase64String方法将Base64编码字符串转换成二进制数组,并使用Encoding.Default方法将二进制数组解码成字符串。

2. 常用的编码类型

C#支持多种编码类型,其中常用的包括以下四种:

2.1 UTF-8编码

UTF-8编码是Unicode的实现方式之一,是一种变长的编码方式,可以表示Unicode标准中的任意字符。可以使用以下方式获取UTF-8编码:

Encoding encoding = Encoding.UTF8;

2.2 UTF-16编码

UTF-16编码是Unicode的实现方式之一,是一种定长的编码方式,可以表示Unicode标准中的任意字符。可以使用以下方式获取UTF-16编码:

Encoding encoding = Encoding.Unicode;

2.3 GBK编码

GBK编码是中文字符编码的一种,全面支持简体中文和繁体中文,可以使用以下方式获取GBK编码:

Encoding encoding = Encoding.GetEncoding("GBK");

2.4 ASCII编码

ASCII编码是一个7位编码,可以表示128个字符,是最早的字符编码之一。在C#中,可以使用以下方式获取ASCII编码:

Encoding encoding = Encoding.ASCII;

3. 使用示例

下面是一个将字符串转换成比特流(byte[])的示例:

//将字符串按指定编码类型转换成byte[]
string original = "文本信息";
byte[] defaultBytes = Encoding.Default.GetBytes(original); //使用默认编码
byte[] utf8Bytes = Encoding.UTF8.GetBytes(original); //使用UTF-8编码
byte[] unicodeBytes = Encoding.Unicode.GetBytes(original); //使用UTF-16编码
byte[] gbkBytes = Encoding.GetEncoding("GBK").GetBytes(original); //使用GBK编码
byte[] asciiBytes = Encoding.ASCII.GetBytes(original); //使用ASCII编码

//输出转换结果
Console.WriteLine("使用默认编码转换结果:" + BitConverter.ToString(defaultBytes));
Console.WriteLine("使用UTF-8编码转换结果:" + BitConverter.ToString(utf8Bytes));
Console.WriteLine("使用UTF-16编码转换结果:" + BitConverter.ToString(unicodeBytes));
Console.WriteLine("使用GBK编码转换结果:" + BitConverter.ToString(gbkBytes));
Console.WriteLine("使用ASCII编码转换结果:" + BitConverter.ToString(asciiBytes));

这个示例将一个字符串使用不同的编码方式转换成了比特流,然后使用BitConverter.ToString()将比特流转换成字符串输出。

另外一个示例是从文件中读取一个UTF-8编码的文本文件,然后转换成字符串输出:

//打开文件
string path = "example.txt";
using (FileStream fs = new FileStream(path, FileMode.Open))
{
    using (StreamReader sr = new StreamReader(fs, Encoding.UTF8))
    {
        string content = sr.ReadToEnd();
        Console.WriteLine(content);
    }
}

在这个示例中,我们使用FileStreamStreamReader类打开文件,指定文件编码为UTF-8。然后使用StreamReader.ReadToEnd()方法将文件内容读取到字符串中,并输出到控制台上。

小结

本文介绍了C#中字符串编码的使用方法,包括编码与解码、常用的编码类型及使用示例。希望能对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#字符串编码编码(encoding)使用方法示例 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • AutoCAD二次开发系列教程01-如何在AutoCAD中输出Hello World

    目录 01项目环境准备 02代码示例 03输出示例 04总结 05源码地址 01项目环境准备 A.开发使用的软件:AutoCAD2016、VisualStudio2022 B.建立依赖的本地库(提前从AutoCAD软件安装目录拷贝开发时需要使用的库,如:accoremgd.dll) C.创建新的类库(.Net Framework),注意不同AutoCAD版本…

    C# 2023年5月8日
    00
  • C# File.Copy(string sourceFileName, string destFileName):复制指定文件

    File.Copy(string sourceFileName, string destFileName)方法是C#中的一个文件操作方法,其主要作用是将一个已存在的文件复制到一个新的文件中。该方法的语法如下: public static void Copy(string sourceFileName, string destFileName); 该方法有两个…

    C# 2023年4月19日
    00
  • C# 中闭包(Closure)详解

    C# 中闭包(Closure)详解 什么是闭包 在C#中,闭包(Closure)指的是可以访问一个函数内部的局部变量,并将其封装在返回的委托(Delegate)中的函数。换句话说,闭包就是一个函数及其引用链。通过闭包,我们可以将局部变量在函数作用域外部继续使用。C#中的闭包在Lambda函数中也可以使用。 如何使用闭包 使用闭包可以方便地在委托中传递参数。举…

    C# 2023年6月7日
    00
  • 详解C# winform ListView的基本操作

    详解C# WinForm ListView的基本操作攻略 介绍 C# WinForm中的ListView是一种非常常用的用于显示数据的控件,本攻略将详细讲解如何使用C# WinForm ListView实现基本操作,包括: ListView的基本属性设置 列表视图、图标视图、详情视图和小图标视图的展示方式 添加、删除和编辑ListView的项 ListVie…

    C# 2023年6月1日
    00
  • C#如何遍历Dictionary

    C#提供了许多方法,可以对Dictionary进行遍历操作。下面是三个常见的遍历方式: 1. 使用foreach循环遍历Dictionary Dictionary<string, int> dict = new Dictionary<string, int>(); // 添加元素 dict.Add("a", 1);…

    C# 2023年6月1日
    00
  • 解决WCF不能直接序列化SqlParameter类型的问题

    为了解决WCF不能直接序列化 SqlParameter 类型的问题,可以采用以下步骤: 1. 自定义 DataContractResolver SqlParameter 类型不能被WCF直接序列化,需要自定义 DataContractResolver 以解决该问题。在自定义 DataContractResolver 的过程中,需要使用一些类来处理实际的序列化…

    C# 2023年5月15日
    00
  • 全面解读C#编程中的析构函数用法

    全面解读C#编程中的析构函数用法 什么是析构函数? 析构函数(Destructor)是C#的一个重要特性,可以在对象被销毁之前执行某些操作,比如释放对象使用的资源等,该函数在类中只能有一个,无返回值类型和参数列表。 析构函数使用场景 析构函数通常用于释放由类对象分配的资源,例如在构造函数中申请一段内存,并在析构函数中释放。以确保内存能够被及时释放,从而避免内…

    C# 2023年5月31日
    00
  • C#如何动态创建lambda表达式

    C#中动态创建Lambda表达式的过程比较复杂,需要使用到表达式树(Expression Tree)和反射(Reflection)等多种技术。下面是完整的攻略过程: 1. 创建表达式树 表达式树是指把Lambda表达式用树形结构表示出来的一种数据结构,C#中可以使用System.Linq.Expressions命名空间中的Expression类来创建表达式树…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部