CSharp——Encoding编码详情

CSharp-Encoding编码

在网络通信中,很多情况下都是将字符信息转成字节序列进行传输。将字符序列转为字节序列的过程称为编码。当这些字节传送到接收方,接收方需要逆向将字节序列转为字符序列。这个过程就是解码。

常见编码有ASCII字符集 ,非ASCII字符集 如GB2312 GB18030等,Unicode字符集。

在C#中,字符集默认是Unicode,一个英文占2个字节,一个汉字也占2个字节。Unicode能够表示大部分国家的文字,但是空间占用相对ASCII较为浪费。

为了节约空间,后续出现了UTF-8,UTF-16,UTF-32.

UTF8是使用最为广泛的一种UTF格式。属于Unicode的一种变长字符编码,一般使用1-4个字节编码表示一个Unicode字符,即将一个Unicode字符编为1-4个字节组成的UTF8格式,根据不同符号而变化字节长度。

UTF8字节序列在所有系统中都一样的,所以这样可以很容易的进行排序。

UTF16将每个码位表示为一个由1-2个16位整数组成的序列。

UTF32将每个码位表示为一个32位整数。

Encoding编码属性

    ASCII    获取 ASCII(7 位)字符集的编码。BigEndianUnicode    获取使用 Big Endian 字节顺序的 UTF-16 格式的编码。BodyName    在派生类中重写时,获取可与邮件代理正文标记一起使用的当前编码的名称。CodePage    在派生类中重写时,获取当前 Encoding 的代码页标识符。DecoderFallback    获取或设置当前 DecoderFallback 对象的 Encoding 对象。Default    获取此 .NET 实现的默认编码。EncoderFallback    获取或设置当前 EncoderFallback 对象的 Encoding 对象。EncodingName    在派生类中重写时,获取当前编码的用户可读说明。HeaderName    在派生类中重写时,获取可与邮件代理头标记一起使用的当前编码的名称。IsBrowserDisplay    在派生类中重写时,获取一个值,该值指示浏览器客户端是否可以使用当前的编码显示内容。IsBrowserSave    在派生类中重写时,获取一个值,该值指示浏览器客户端是否可以使用当前的编码保存内容。IsMailNewsDisplay    在派生类中重写时,获取一个值,该值指示邮件和新闻客户端是否可以使用当前的编码显示内容。IsMailNewsSave    在派生类中重写时,获取一个值,该值指示邮件和新闻客户端是否可以使用当前的编码保存内容。IsReadOnly    在派生类中重写时,获取一个值,该值指示当前的编码是否为只读。IsSingleByte    在派生类中重写时,获取一个值,该值指示当前的编码是否使用单字节码位。Unicode    获取使用 Little-Endian 字节顺序的 UTF-16 格式的编码。UTF32    获取使用 Little-Endian 字节顺序的 UTF-32 格式的编码。UTF7    获取 UTF-7 格式的编码。UTF8    获取 UTF-8 格式的编码。WebName    在派生类中重写时,获取在 Internet 编号分配管理机构 (IANA) 注册的当前编码的名称。WindowsCodePage    在派生类中重写时,获取与当前编码最紧密对应的 Windows 操作系统代码页。


    

Encoding编码方法

    Clone()    当在派生类中重写时,创建当前 Encoding 对象的一个卷影副本。Convert(Encoding, Encoding, Byte[])    将整个字节数组从一种编码转换为另一种编码。Convert(Encoding, Encoding, Byte[], Int32, Int32)    将字节数组内某个范围的字节从一种编码转换为另一种编码。Equals(Object)    确定指定的 Object 是否等同于当前实例。GetByteCount(Char*, Int32)    在派生类中重写时,计算对一组字符(从指定的字符指针处开始)进行编码所产生的字节数。GetByteCount(Char[])    在派生类中重写时,计算对指定字符数组中的所有字符进行编码所产生的字节数。GetByteCount(Char[], Int32, Int32)    在派生类中重写时,计算对指定字符数组中的一组字符进行编码所产生的字节数。GetByteCount(String)    在派生类中重写时,计算对指定字符串中的字符进行编码所产生的字节数。GetBytes(Char*, Int32, Byte*, Int32)    在派生类中重写时,将一组字符(从指定的字符指针开始)编码为一个字节序列,并从指定的字节指针开始存储该字节序列。GetBytes(Char[])    在派生类中重写时,将指定字符数组中的所有字符编码为一个字节序列。GetBytes(Char[], Int32, Int32)    在派生类中重写时,将指定字符数组中的一组字符编码为一个字节序列。GetBytes(Char[], Int32, Int32, Byte[], Int32)    在派生类中重写时,将指定字符数组中的一组字符编码为指定的字节数组。GetBytes(String)    在派生类中重写时,将指定字符串中的所有字符编码为一个字节序列。GetBytes(String, Int32, Int32, Byte[], Int32)    在派生类中重写时,将指定字符串中的一组字符编码为指定的字节数组。GetCharCount(Byte*, Int32)    在派生类中重写时,计算对字节序列(从指定的字节指针开始)进行解码所产生的字符数。GetCharCount(Byte[])    在派生类中重写时,计算对指定字节数组中的所有字节进行解码所产生的字符数。GetCharCount(Byte[], Int32, Int32)    在派生类中重写时,计算对字节序列(从指定字节数组开始)进行解码所产生的字符数。GetChars(Byte*, Int32, Char*, Int32)    在派生类中重写时,将一个字节序列(从指定的字节指针开始)解码为一组字符,并从指定的字符指针开始存储该组字符。GetChars(Byte[])    在派生类中重写时,将指定字节数组中的所有字节解码为一组字符。GetChars(Byte[], Int32, Int32)    在派生类中重写时,将指定字节数组中的一个字节序列解码为一组字符。GetChars(Byte[], Int32, Int32, Char[], Int32)    在派生类中重写时,将指定字节数组中的字节序列解码为指定的字符数组。GetDecoder()    在派生类中重写时,获取一个解码器,该解码器将已编码的字节序列转换为字符序列。GetEncoder()    在派生类中重写时,获取一个解码器,该解码器将 Unicode 字符序列转换为已编码的字节序列。GetEncoding(Int32)    返回与指定代码页标识符关联的编码。GetEncoding(Int32, EncoderFallback, DecoderFallback)    返回与指定代码页标识符关联的编码。 参数指定一个错误处理程序,用于处理无法编码的字符和无法解码的字节序列。GetEncoding(String)    返回与指定代码页名称关联的编码。GetEncoding(String, EncoderFallback, DecoderFallback)    返回与指定代码页名称关联的编码。 参数指定一个错误处理程序,用于处理无法编码的字符和无法解码的字节序列。GetEncodings()    返回包含所有编码的数组。GetHashCode()    返回当前实例的哈希代码。GetMaxByteCount(Int32)    在派生类中重写时,计算对指定数目的字符进行编码所产生的最大字节数。GetMaxCharCount(Int32)    在派生类中重写时,计算对指定数目的字节进行解码时所产生的最大字符数。GetPreamble()    在派生类中重写时,返回指定所用编码的字节序列。GetString(Byte*, Int32)    在派生类中重写时,将在指定地址开始的指定字节数解码为字符串。GetString(Byte[])    在派生类中重写时,将指定字节数组中的所有字节解码为一个字符串。GetString(Byte[], Int32, Int32)    在派生类中重写时,将指定字节数组中的一个字节序列解码为一个字符串。GetType()    获取当前实例的 Type。IsAlwaysNormalized()    使用默认范式获取一个值,该值指示当前编码是否始终被规范化。IsAlwaysNormalized(NormalizationForm)    在派生类中重写时,使用指定范式获取一个值,该值指示当前编码是否始终被规范化。MemberwiseClone()    创建当前 Object 的浅表副本。RegisterProvider(EncodingProvider)    注册编码提供程序。ToString()    返回表示当前对象的字符串。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/39184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL | join 的目的是什么?

如是我闻: 在 SQL 中使用 JOIN 的目的是将两个或多个数据库表的数据组合在一起,这样我们就可以在一个查询中获取这些表的相关信息。 假设我们有两本不同的书,一本记录了孩子们的名字和他们的爱好,另一本记录了他们的家庭地址。如…

盛元广通打造智慧校园实验室安全管理系统

盛元广通智慧校园实验室安全管理系统以安全为重点,构建由学校、二级单位、实验室组成的三级联动的实验室安全多级管理体系、多类用户角色,内置教育部标准检查表,支撑实验室相关业务过程的智慧管理。实现通过PC端/手机移动端开展检查工作、手机…

sh脚本笔记2

test条件测试 语法 条件测试语法说明语法1&#xff1a;test <测试表达式>这是利用test命令进行条件测试表达式的方法。test命令和“<测试表达式>”之间至少有一个空格语法2&#xff1a;[ <测试表达式> ]这是通过[]&#xff08;单中括号&#xff09;进行条件…

将exe文件添加到注册表中,实现开机时自动运行

目录 一、前言 二、代码 三、使用步骤 1.编译生成exe文件、 2.以管理员身份运行代码 3.打开注册表&#xff0c;验证结果 一、前言 在Windows操作系统中&#xff0c;将exe文件的路径添加到注册表下&#xff0c;主要用于实现程序的开机自动运行功能。 注册表路径为&#xf…

白骑士的C语言教学基础篇 1.3 控制流

系列目录 上一篇&#xff1a;白骑士的C语言教学基础篇 1.2 C语言基础语法 在这一节中&#xff0c;我们将介绍C语言中的控制流结构&#xff0c;包括条件语句、循环语句以及循环控制语句。这些结构允许我们根据不同的条件执行不同的代码块&#xff0c;从而使程序更具灵活性和功能…

Python中的并发编程(5)PyQt 多线程

PyQt 多线程 1 卡住的计时器 我们定义了一个计时器&#xff0c;每秒钟更新一次显示的数字。此外我们定义了一个耗时5秒的任务oh_no&#xff0c;和按钮“危险”绑定。 当我们点击“危险”按钮时&#xff0c;程序去执行oh_no&#xff0c;导致显示停止更新了。 import sys im…

Aspose.PDF功能演示:在程序中合并 JPG 文件

Aspose.PDF 是一款高级PDF处理API&#xff0c;可以在跨平台应用程序中轻松生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现&#xff0c;保护和打印文档。无需使用Adobe Acrobat。此外&#xff0c;API提供压缩选项&#xff0c;表创建和处理&#xff0c;图形和图像功能&am…

Kile钟优化等级讲解

这里直接说说kile的优化等级: 这里有4个等级,分别为:-O0、-O1、-O2、-O3 为什么要进行编译优化? 主要目的: 1. 提高代码执行的速度; 2. 减少内存占用; 3. 降低能耗,延长电池寿命; 4. 消除代码中冗余和不必要的代码,提高程序稳定性和可靠性。 Kile等级描述: -O0:这…

leetcode-21-回溯-全排列及其去重

一、[46]全排列 给定一个 没有重复 数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: [1,2,3]输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 其中&#xff0c;不需要使用startIndex used数组&#xff0c;其实就是记录此时path里都有哪些元素…

【图论】200. 岛屿问题

200. 岛屿问题 难度&#xff1a;中等 力扣地址&#xff1a;https://leetcode.cn/studyplan/top-100-liked/ 问题描述 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&…

一个专为Android平台设计的高度可定制的日历库

大家好&#xff0c;今天给大家分享一个高度可定制的日历库kizitonwose/Calendar。 Calendar专为Android平台设计&#xff0c;支持RecyclerView和Compose框架。它提供了丰富的功能&#xff0c;允许开发者根据需求定制日历的外观和功能。 项目介绍 此库是开发Android应用时&…

大型语言模型评估调查

原文链接&#xff1a;A Survey on Evaluation of Large Language Models | ACM Transactions on Intelligent Systems and Technology 本文从三个关键维度&#xff1a;评价什么、在哪里评价和如何评价&#xff0c;对这些 LLMs 评价方法进行了全面回顾。 首先&#xff0c;我们…

第十四届蓝桥杯省赛C++A组F题【买瓜】题解(AC)

70pts 题目要求我们在给定的瓜中选择一些瓜&#xff0c;可以选择将瓜劈成两半&#xff0c;使得最后的总重量恰好等于 m m m。我们的目标是求出至少需要劈多少个瓜。 首先&#xff0c;我们注意到每个瓜的重量最多为 1 0 9 10^9 109&#xff0c;而求和的重量 m m m 也最多为…

C++ 彻底搞懂指针(1)

当有人问起,什么是指针时,我会毫不犹豫地回答,指针变量存放的是地址!然后呢,好像也说不出什么了,今天就再来详细看一下指针吧。 本文提纲如下: • 指针变量 • 未初始化的指针 • NULL • void指针 • 指针的指针 首先要明白几点: • 每个字节都有…

用OpenAI接口给女朋友手搓AI小助理,她说要奖励我,结果……

前言 最近&#xff0c;我那财经系的小女友迎来了考试周&#xff0c;她的复习资料已经堆得像珠穆朗玛峰一样高。压力山大的她不断让我帮她整理这些资料&#xff0c;还频频向我倾诉她的苦水。虽然我自己也挺忙的&#xff0c;但为了爱&#xff0c;我只能忍痛扛起这重担。。。为了…

【C++】STL-priority_queue

目录 1、priority_queue的使用 2、实现没有仿函数的优先级队列 3、实现有仿函数的优先级队列 3.1 仿函数 3.2 真正的优先级队列 3.3 优先级队列放自定义类型 1、priority_queue的使用 priority_queue是优先级队列&#xff0c;是一个容器适配器&#xff0c;不满足先进先出…

Spring Boot配置文件properties/yml/yaml

一、Spring Boot配置文件简介 &#xff08;1&#xff09;名字必须为application,否则无法识别。后缀有三种文件类型&#xff1a; properties/yml/yaml&#xff0c;但是yml和yaml使用方法相同 &#xff08;2&#xff09; Spring Boot 项⽬默认的配置文件为 properties &#xff…

【单片机毕业设计选题24041】-基于STM32的水质检测系统

系统功能: 系统上电后显示“欢迎使用水质检测系统请稍后”两秒后进入正常显示页面。 第一页面第一行显示“系统状态信息”&#xff0c;第二行显示温度和PH值信息&#xff0c;第三行显示 浑浊度信息&#xff0c;第四行显示TDS值信息。 第一页面下的按键操作&#xff1a; 短…

Kotlin中的类

类初始化顺序 constructor 里的参数列表是首先被执行的&#xff0c;紧接着是 init 块和属性初始化器&#xff0c;最后是次构造函数的函数体。 主构造函数参数列表firstProperty 初始化第一个 init 块secondProperty 初始化第二个 init 块次构造函数函数体 class Example const…

英语动词时态

英语动词时态总结 动词时态一般进行完成完成进行现在一般现在时态动词原形/动词原形s&#xff08;第三人称单数&#xff09;eat/eats现在进行时态助动词be的变位动词的现在分词am/is/are eating现在完成时态助动词have的变位动词的过去分词has/have eaten现在完成进行时态have…