string ShowCodePoints(string str1) => str1.Aggregate("", (current, ch) => current + $"U+{Convert.ToUInt16(ch):X4} "); var idn = new IdnMapping(); foreach (var name in args) { try { var puny = idn.GetAscii(name); var name2 = idn.GetUnicode(puny); Console.WriteLine($"{name} --> {puny} --> {name2}"); Console.WriteLine($"Original: {ShowCodePoints(name)}"); Console.WriteLine($"Restored: {ShowCodePoints(name2)}"); } catch (ArgumentException) { Console.WriteLine($"{name} is not a valid domain name."); } }