所以我有通过 ftp 下载的这个文件。该文件只是我工作的公司系统的配置文件。下载文件后,我打开文件并处理文件。文件处理的一部分是检查一行是否以 Unicode 字符开头\u001a
。
这就是我感到困惑的地方,因为.StartsWith("\u001a")
总是如此true
,但我不明白为什么。如果我在 Notepad++ 或十六进制编辑器中查看该文件,我只是看不到该文件。
所以我在这里缺少一些东西。
这是一个最小的例子(fiddle):
// prints True in .NET 5
Console.WriteLine("Hello".StartsWith("\u001a"));
Run Code Online (Sandbox Code Playgroud)
这是因为.NET 5 中的全球化 API 发生了重大变化。您可以选择以下方法之一
StringComparison.Ordinal
或OrdinalIgnoreCase
<ItemGroup>
<RuntimeHostConfigurationOption Include="System.Globalization.UseNls" Value="true" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
{
"runtimeOptions": {
"configProperties": {
"System.Globalization.UseNls": true
}
}
}
Run Code Online (Sandbox Code Playgroud)
DOTNET_SYSTEM_GLOBALIZATION_USENLS
为值true
或1
.