以下代码是一种解决方法,它允许我们使用现有产品中的某些功能,而无需更改其中的任何代码。这对我们来说是件好事,但我想了解为什么会这样?0x81 字符有什么特别之处?
"A".Equals(Encoding.UTF8.GetString(new byte[] { 0x41, 0x81 }), StringComparison.InvariantCulture) // Returns TRUE
上面的代码适用于 CurrentCulture 和 InvariantCulture 但不适用于 Ordinal。这是有道理的,因为按顺序比较每个字节都会在上面的代码中失败。它不适用于默认编码 (SBCS)。