.net5与之前的版本GetBytes长度变化

string strTmp = "a1某某某";
int a = System.Text.Encoding.Default.GetBytes(strTmp).Length;

在.net framework 4.5中 一个中文表示两个字节 其它为1个字节,所以a的字节长度为8

在.net5中 一个中文代表3个字节,所以a=11

 

其中GetBytes的注释为

//
// 摘要:
// 在派生类中重写时,将指定字符串中的所有字符编码为一个字节序列。
//
// 参数:
// s:
// 包含要编码的字符的字符串。
//
// 返回结果:
// 一个字节数组,包含对指定的字符集进行编码的结果。
//
// 异常:
// System.ArgumentNullException:
// s 为 null。
//
// System.Text.EncoderFallbackException:
// 发生回退(请参见.NET Framework 中的字符编码以获得完整的解释) -和- 将 System.Text.Encoding.EncoderFallback
// 设置为 System.Text.EncoderExceptionFallback。

posted @ 2022-02-28 16:58  奉利民  阅读(104)  评论(0编辑  收藏  举报