更准确地说,最新版本的c#(c# 12 (.NET 8.0)),它对字符串使用UTF-8还是UTF-16?
我很困惑,因为: https://learn.microsoft.com/en-us/dotnet/standard/base-types/character-encoding-introduction
字符串在逻辑上是 16 位值的序列,每个值都是 char 结构的实例。
这里: https://learn.microsoft.com/en-us/dotnet/core/compatibility/globalization/5.0/icu-globalization-api
.NET 5 及更高版本在 Windows 10 May 2019 Update 或更高版本上运行时,使用 International Components for Unicode (ICU) 库来实现全球化功能。
如果在 Linux 上运行怎么办?我必须提供 ICU 库吗? 或者是这样的说法,c# 仍然使用 16 位值并删除所有拉丁语言的零并将其映射到 ICU?
它似乎是UTF16:
目前没有有效的语法来执行此操作,因为 C# 代表了所有 使用 UTF16 编码的字符串。