当我做
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它会以这种方式滥用它,因为它只为每个字符使用一个字节,并且恰好每个字节代码都有一个字符.但是,以这种方式使用它仍然没有意义.