在 .NET 中为什么不是这样:
Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(x))
返回任意字节数组 x
的原始字节数组?
是mentioned在回答另一个问题时,回答者没有解释原因。
最佳答案
首先,正如 watbywbarif 提到的,您不应该使用 ==
来比较序列,那是行不通的。
但即使您正确地比较了数组(例如,通过使用 SequenceEquals()
或仅仅通过查看它们),它们也不总是相同的。可能发生这种情况的一种情况是 x
是无效的 UTF-8 编码字符串。
例如,0xFF
的 1 字节序列不是有效的 UTF-8。那么 Encoding.UTF8.GetString(new byte[] { 0xFF })
返回什么?它是 �,U+FFFD,替换字符。当然,如果您对此调用 Encoding.UTF8.GetBytes()
,它不会返回 0xFF
。
关于c# - 为什么不是 `Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(x))==x`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740553/