about summary refs log tree commit diff
path: root/Puny.cs
diff options
context:
space:
mode:
authorBen Harris <ben@tilde.team>2022-08-05 14:16:46 -0400
committerBen Harris <ben@tilde.team>2022-08-05 14:17:36 -0400
commit1b872a0ede581b1edef3c04d5eec405c87056f3c (patch)
tree741695d927b7e59408493d2ca955c71ee3a60e4f /Puny.cs
init
Diffstat (limited to 'Puny.cs')
-rw-r--r--Puny.cs19
1 files changed, 19 insertions, 0 deletions
diff --git a/Puny.cs b/Puny.cs
new file mode 100644
index 0000000..f6be5f3
--- /dev/null
+++ b/Puny.cs
@@ -0,0 +1,19 @@
+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.");
+    }
+}
\ No newline at end of file