c# - 数组和字符串编码

标签 c# encoding

当我做的时候

string s = Encoding.Unicode.GetString(a);
byte[] aa = Encoding.Unicode.GetBytes(s);

我有不同的数组 (a != aa) 。 为什么

但是我什么时候这样做呢?没关系

string s = Encoding.Default.GetString(a);
byte[] aa = Encoding.Default.GetBytes(s);

最佳答案

那是因为你使用的是反向编码。编码用于将字符串编码为字节,然后再次编码为字符串。

在一种编码中,每个字符都有一组对应的字节,但并不是每组字节都必须有一个对应的字符。这就是为什么您不能将任意字节解码为字符串的原因。

使用编码 Default 它会以这种方式滥用它,因为它只为每个字符使用一个字节,而它恰好有一个字符用于每个字节代码。不过,以这种方式使用它仍然没有意义。

关于c# - 数组和字符串编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14321634/

相关文章:

c# - 尝试使用 C# BlobClient 删除租用的 blob 时收到错误 "There is currently a lease on the blob and no lease ID was specified"?

java - 在打开文件之前如何知道编码方案?

python - 如何在 python 中编写自定义编码来清理我的数据?

php - 使用 Internet Explorer %u20AC 到 € 的 UTF-8 编码

javascript - 连接具有不同编码的 javascript 文件

encoding - 理论: "Lexical Encoding"

c# - 如何访问匿名类型?

c# - IOrganizationService 更新实体的正确方法

c# - 什么是最适合实现具有 1000 多个具体实现的接口(interface)的设计模式?

C# 在 PictureBox 中的某个点上绘制位图