数组和字符串编码

Zhe*_*nia 2 c# encoding

当我做

string s = Encoding.Unicode.GetString(a);
byte[] aa = Encoding.Unicode.GetBytes(s);
Run Code Online (Sandbox Code Playgroud)

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

但是当我这样做的时候?没关系

string s = Encoding.Default.GetString(a);
byte[] aa = Encoding.Default.GetBytes(s);
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 11

那是因为你正在向后使用编码.编码用于将字符串编码为字节,然后再次返回字符串.

在编码中,每个字符都有一组相应的字节,但并不是每组字节都必须有相应的字符.这就是为什么你不能把任意字节和解码成一个字符串.

使用编码Default它会以这种方式滥用它,因为它只为每个字符使用一个字节,并且恰好每个字节代码都有一个字符.但是,以这种方式使用它仍然没有意义.