UTF-8编码字符串的Trim() 在.35和4.0中的行为区别

时间:2022-02-23 18:59:13

.NET Framework 3.5 SP1 和早期版本维护一个此方法修整的空白字符的内部列表。 从 .NET Framework 4 开始,该方法将修整所有 Unicode 空白字符(也就是在传递到 Char.IsWhiteSpace 方法时生成 true 返回值的字符)。 由于该更改,.NET Framework 3.5 SP1 中的 Trim 方法以及早期版本会删除两个字符 ZERO WIDTH SPACE (U+200B) 和 ZERO WIDTH NO-BREAK SPACE (U+FEFF),而 .NET Framework 4 中的 Trim 方法不会删除这些字符。 此外,.NET Framework 3.5 SP1 以及更早版本中的 Trim 方法也不会修整三个 Unicode 空白字符:*N VOWEL SEPARATOR (U+180E)、NARROW NO-BREAK SPACE (U+202F) 和 MEDIUM MATHEMATICAL SPACE (U+205F)。


new UTF8Encoding(true); 字符串写入时会在字节流前加入BOM签名(而不管字节流中是否已有BOM签名)

new UTF8Encoding(false); 字符串写入时会在字节流前不会加入BOM签名


其它编码的字符串在转换成new UTF8Encoding(true); 编码时,却不会添加BOM,