我写了一个示例控制台应用程序:
- 获取当前的 DotNet 版本
- 然后从拉丁字符串中获取 ASCII(每个标签长度等于或小于 63 个符号,总字符串长度(包括点)为 254 个符号)
static void Main(string[] args)
{
Console.WriteLine("Environment.Version: " + Environment.Version);
new IdnMapping().GetAscii(
"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss." +
"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss." +
"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss." +
"ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss");
Console.WriteLine("Hello World!");
}
当我在 .Net Core 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)
用于 IdnMapping 的 DotNet 5 中是否有任何重大更改?输入字符串应该有什么要求?