我编写了一个控制台应用程序示例:
。
static void Main(string[] args)
{
Console.WriteLine("Environment.Version: " + Environment.Version);
new IdnMapping().GetAscii(
"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss." +
"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss." +
"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss." +
"ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss");
Console.WriteLine("Hello World!");
}
当我在.Net核心3.1上运行程序时,输出是:
Environment.Version: 3.1.13
Hello World!
当我在.Net 5.0上运行程序时,输出是:
Environment.Version: 5.0.9
Unhandled exception. System.ArgumentException: Decoded string is not a valid IDN name. (Parameter 'unicode')
at System.Globalization.IdnMapping.IcuGetAsciiCore(String unicodeString, Char* unicode, Int32 count)
at System.Globalization.IdnMapping.GetAscii(String unicode, Int32 index, Int32 count)
at System.Globalization.IdnMapping.GetAscii(String unicode, Int32 index)
at System.Globalization.IdnMapping.GetAscii(String unicode)
at Program.Main(String[] args)
DotNet 5中对于IdnMapping是否有任何破坏变化?输入字符串的要求应该是什么?
发布于 2021-10-18 10:50:19
.NET 3.1在Windows上使用NLS (National Language Support) API,在Unix上使用ICU ()库,这导致了在不同平台上运行应用程序时的行为差异
.NET 5.0使用ICU库,因此,IDN的某些行为与.NET 3.1 https://learn.microsoft.com/en-us/dotnet/core/extensions/globalization-icu不同
https://stackoverflow.com/questions/69541426
复制相似问题