System.Text.Encoding.Default在.net 及.netcore下不尽相同

var data = System.Text.Encoding.Default.GetBytes("你好,China");
Console.WriteLine(data.Length);

当面试官问你这打印出来是多少的时候,你一定要反问是在.net framework下还是.net core下。因为在.net framework下,打印是11。在.net core下打印是14。关于为何有此差异,MSDN上给出了解释。

The Default property in the .NET Framework

In the .NET Framework on the Windows desktop, the Default property always gets the system‘s active code page and creates a Encoding object that corresponds to it. The active code page may be an ANSI code page, which includes the ASCII character set along with additional characters that vary by code page. Because all Default encodings based on ANSI code pages lose data, consider using the Encoding.UTF8 encoding instead. UTF-8 is often identical in the U+00 to U+7F range, but can encode characters outside the ASCII range without loss.

The Default property on .NET Core

On .NET Core, the Default property always returns the UTF8Encoding. UTF-8 is supported on all the operating systems (Windows, Linux, and Max OS X) on which .NET Core applications run.

原文地址:https://www.cnblogs.com/creekcloud/p/10240456.html

时间: 2024-10-09 01:39:09

System.Text.Encoding.Default在.net 及.netcore下不尽相同的相关文章

所有的字符编码由System.Text.Encoding类获取所有的字符编码如Unicode编码、 GB18030编码、(UTF-8) 简体中文(GB2312)

本页列出来目前window下所有支持的字符编码  ---通过 System.Text.Encoding.GetEncodings()获取,里面可以对其进行查询,筛选,对同一个字符,在不同编码进行查看和分析... 代码页编号 名称 代码 类型 单字节码位 37 IBM EBCDIC (美国-加拿大) IBM037 SBCSCodePageEncoding 是 437 OEM 美国 IBM437 SBCSCodePageEncoding 是 500 IBM EBCDIC (国际) IBM500 SB

The output char buffer is too small to contain the decoded characters, encoding 'Unicode (UTF-8)' fallback 'System.Text.DecoderReplacementFallback'.

Exception when executing if (br.PeekChar() != -1) br is a binary reader. The data to peak is D000 (D0=208) The cause is, for PeekChar, after peak, the value will be transformed to char. But Unicode and normal char has different length. If I use br.Re

.net core中关于System.Text.Json的使用

在.Net Framework的时候序列化经常使用Newtonsoft.Json插件来使用,而在.Net Core中自带了System.Text.Json,号称性能更好,今天抽空就来捣鼓一下. 使用起来其实也很简单,就是有些地方要注意,比如在我们的对象实体中有中文的话,直接序列化时中文会被转换成编码格式,时间格式序列化时会被转成默认的格式等. 下面就直接上Demo的代码了 using System; using System.Text.Encodings.Web; using System.Te

System.Text.Json 自定义Converter实现时间转换

Newtonsoft.Json与System.Text.Json区别 在 Newtonsoft.Json中可以使用例如 .AddJsonOptions(options => { options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; }) 方式设置接收/序列化时间格式,但在.net core 3.1中System.Text.Json是没有自带方式进行转换,这就需要自定义Converter实现时间转换

vs2013c#测试using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1_CXY { class Program { stati

首先安装Unit Test Generator.方法为:工具->扩展和更新->联机->搜索“图标为装有蓝色液体的小试管.Unit Test Generator”, 编写代码,生成一个新的类,编写构造函数 与 add()函数.代码如下. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Co

.net正则表达式大全(.net 的 System.Text.RegularExpressions.Regex.Match()方法使用)

正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET的System.dll类库提供的System.Text.RegularExpressions.Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的正则表达式.它还包含各种静态方法,允许在不显式创建其他类的实例的情况下使用其他正则表达式类. 正则表达式的字符代表的说明: Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN

【酷熊科技】工作积累 ----------- Unity3D / c 语言 使用 Stringbuilder 引用头文件 using System.Text

使用 StringBuilder Unity3D / c 语言 使用 Stringbuilder 引用头文件 using System.Text 简述StringBuilder和String的区别? String是字符串常量.  StringBuffer是字符串变量 ,线程安全. StringBuilder是字符串变量,线程不安全.  String类型是个不可变的对象,当每次对String进行改变时都需要生成一个新的String对象,然后将指针指向一个新的对象,如果在一个循环里面,不断的改变一个

Net core 2.x 升级 3.0 使用自带 System.Text.Json 时区 踩坑经历

.Net Core 3.0 更新的东西很多,这里就不多做解释了,官方和博园大佬写得很详细 关于 Net Core 时区问题,在 2.1 版本的时候,因为用的是 Newtonsoft.Json,配置比较方便 AddJsonOptions(opt => { opt.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Local; }) 但是用 System.Text.Json 就没那么方便了,翻

ef core 自引用类 报错System.Text.Json.JsonException: A possible object cycle was detected which is not supported....

ef core 创建自引用灰了了 public class Menu:IEntity { public int Id { get; set; } public string text { get; set; } public bool group { get; set; } public bool shortout_root { get; set; } public string link { get; set; } public string icon { get; set; } public