Ger*_*ost 3 c# binary encoding utf-8 data-conversion
在c#中,我可以对二进制数据进行编码Encoding.UTF8.GetString(),然后将其转换回来binary = Encoding.UTF8.GetBytes().
我希望结果在任何情况下都应该是我原来的二进制数据 - 没有例外.
但无论如何这是真的吗?
或者它取决于UTF8字符集的特定行为?
或者我应该更好地使用Encoding.ASCII.GetString()和Encoding.ASCII.GetBytes()?
如果有人知道究竟Encoding是做什么的(它如何对待特殊字符或特殊字节)那么请给我建议.
在c#中,我可以通过Encoding.UTF8.GetString()编码二进制数据,然后通过binary = Encoding.UTF8.GetBytes()将其转换回来.
不,因为那不是文本编码所做的.
文本编码将任意文本转换为结构化字节/从结构化字节转换(意思是:以该编码定义的方式构造)
你有任意字节,而不是结构化字节.您应该使用base-64(Convert.ToBase64String/ Convert.FromBase64String),它将任意字节转换为结构化字符串/从结构化字符串转换 - 在这种情况下,根据base-64的规则进行结构化.
byte[] orig = ...
string storeThis = Convert.ToBase64String(orig);
// ...
byte[] backAgain = Convert.FromBase64String(storeThis);
Run Code Online (Sandbox Code Playgroud)