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.mfbz.cn/a/763924.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL备份】Percona XtraBackup增量备份实战篇

目录 1.前言 2.准备工作 2.1.环境信息 2.2.创建备份目录 2.3.配置/etc/my.cnf文件 2.4.授予root用户BACKUP_ADMIN权限 3.增量备份 3.1.第一步:全量备份 3.2.第二步:增量备份 3.3.第三步:再次增量备份 4.准备备份 4.1.准备全量备…

秋招Java后端开发冲刺——基础篇5(String集合)

一、String String类是Java中字符串操作类,位于java.lang包下String类型对象的底层使用字符数组char[]存储字符串,由final修饰且没有提供公共的修改方法,因此String对象是不可变的。常见方法 方法名作用trim()去掉字符串首尾空字符split(分…

【面试系列】产品经理高频面试题及详细解答

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、…

我在国企当合同工的那段日子

心血来潮 25号考完了,非常不理想,果然700页的东西不是一个月能搞完的。不对,我今儿写日志是为了纪念一下我的第一家公司,咋扯到别的了…言归正传,我在第一家公司待了仨年,可能是年纪到了(26岁咋还不退休啊…

发送微信消息和文件

参考:https://www.bilibili.com/video/BV1S84y1m7xd 安装: pip install PyOfficeRobotimport PyOfficeRobotPyOfficeRobot.chat.send_message(who"文件传输助手", message"你好,我是PyOfficeRobot,有什么可以帮助…

SpringBoot中整合ONLYOFFICE在线编辑

SpringBoot整合OnlyOffice SpringBoot整合OnlyOffice实现在线编辑1. 搭建私有的OnlyOffice的服务2. SpringBoot进行交互2.1 环境2.2 我们的流程2.3 接口规划2.3.1 获取编辑器配置的接口2.3.2 文件下载地址2.3.3 文件下载地址 3. 总结4. 注意4.1 你的项目的地址一定一定要和only…

gcc versions later than 10 are not supported!

如何修改Linux服务器gcc和g版本 查看gcc和g版本 gcc -vg -v修改gcc和g版本 家目录创建./local/bin文件夹 mkdir -p ~/.local/bin把 ~/.local/bin 加到你的 PATH 里 打开~/.bashrc 然后 export PATH~/.local/bin:$PATH后source ~/.bashrc将gcc和g需要的版本加入 ~/.local/bin…

Elasticsearch-Rest-Client

Elasticsearch-Rest-Client&#xff1a;官方RestClient&#xff0c;封装了ES操作&#xff0c;API层次分明&#xff0c;上手简单。 1. 导入依赖 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high…

激光粒度分析仪计量校准规范:确保测量精度的关键

激光粒度分析仪作为现代科研与工业生产中不可或缺的分析工具&#xff0c;广泛应用于陶瓷、土壤、制药、建材、环保等众多领域。 其通过激光散射原理&#xff0c;快速准确地测量颗粒材料的粒度分布&#xff0c;为材料科学研究、产品质量控制及环境保护等提供了强有力的技术支持…

罗德和神牛、西圣无线麦克风哪个好用?罗德、西圣多方位实测对比

随着短视频行业的兴起&#xff0c;越来越多人开始加入自媒体创作的行业中&#xff0c;不过对于短视频而言&#xff0c;光有好的画面是不够的&#xff0c;还需要清晰、干净的声音。而无线领夹麦适用于唱歌、直播、吃播、短视频、访谈等场景使用&#xff0c;而且能够极大的提高声…

微信小程序渲染层与逻辑层交互原理

1. 网页开发与小程序开发有何不同&#xff1f; 2. 小程序运行环境 3. 页面渲染技术选型 1. 纯客户端技术&#xff1b; 2. 纯Web技术&#xff1b; 3. 用客户端原生技术与Web技术结合的混合技术&#xff08;Hybrid&#xff09;&#xff0c;小程序就是使用的这种技术&#xff1…

dledger原理源码分析系列(一)-架构,核心组件和rpc组件

简介 dledger是openmessaging的一个组件&#xff0c; raft算法实现&#xff0c;用于分布式日志&#xff0c;本系列分析dledger如何实现raft概念&#xff0c;以及dledger在rocketmq的应用 本系列使用dledger v0.40 本文分析dledger的架构&#xff0c;核心组件&#xff1b;rpc组…

抠图后怎么跟背景自然融合?分享3款工具

抠图后怎么跟背景自然融合&#xff1f;将抠图后的图片与背景自然融合可以极大地提升图像的整体视觉效果&#xff0c;使我们能够更方便地创造出丰富多彩、独具特色的设计作品。无论是广告海报、产品展示还是社交媒体分享&#xff0c;自然融合的背景都能让抠图元素与周围环境融为…

【Kaggle】Telco Customer Churn 数据编码与模型训练

&#x1f4ac;在上一部分中&#xff0c;我们已经完成了对数据集背景解读、数据预处理与探索性分析。在数据背景解读中&#xff0c;我们介绍了数据集来源、电信用户流失分析的基本业务背景&#xff0c;并详细解释了每个字段的基本含义&#xff1b;在数据预处理过程中&#xff0c…

11集在Docker上编译tensorFlow Lite MCU例子工程-《MCU嵌入式AI开发笔记》

【11集在Docker上编译tensorFlow Lite MCU例子工程-《MCU嵌入式AI开发笔记》】 这一集咱们一步一步的在doc下面编译TensorFlow Lite的例程 https://tensorflow.google.cn/lite/tutorials?hlzh-cn 进入这个例子&#xff1a; https://codelabs.developers.google.cn/codelabs/…

Python学习笔记六

1.实现4*4随机矩阵 #生成一个随机4*4的数组 import numpy as np np.random.seed(1)#固定随机数 每次都是同一个 &#xff08;&#xff09;里面的数字不同 对应的随机数也不同 np.random.rand() anp.random.randint(0,100,16).reshape(4,4)#0~100的随机整数 包含16个元素 pri…

Java学习 (六) 面向对象--this、继承、方法重写、super

一、this 关键字 1、this 演示 vi Person.java public class Person {String name;int age;//显示声明构造器public Person(String s , int i){name s;age i;}public void setAge(int age){age age;}}vi PersonTest.java public class PersonTest {public static void m…

FuTalk设计周刊-Vol.063

#AI漫谈 热点捕手 1.设计师必看&#xff01;GPTs让你的创意飞起来&#xff01; 我们将深入探讨什么是GPTs、其强大功能和独特优势&#xff0c;以及一些值得推荐的GPT应用和获取途径。 链接https://mp.weixin.qq.com/s/EtVxF9XYvCu6ANFfotortA 2.Figma Config 2024 大会内容回…

考研生活day2--王道课后习题2.3.1、2.3.2、2.3.3

2.3.1 题目描述&#xff1a; 这题和曾经做过的LeetCode203.移除元素一模一样&#xff0c;所以我们就使用LeetCode进行书写&#xff0c;题目链接203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 解题思路 大家的第一反应肯定是根据书上所学的书写方法一样书写&…

为什么这几年参加PMP考试的人越来越多

参加PMP认证的人越来越多的原因我认为和社会发展、职场竞争、个人提升等等方面有着不小的关系。国际认证与国内认证的性质、发展途径会有一些区别&#xff0c;PMP引进到中国二十余年&#xff0c;报考人数持增长状态也是正常的。 具体可以从下面这几个点来展开论述。 市场竞争…