В данной статье мы разберём работу с punycode. Для этого мы будем использовать класс IdnMapping.
Конвертация unicode в punycode:
using System; using System.Globalization; namespace Punycode { class Program { static void Main(string[] args) { IdnMapping idnMapping = new IdnMapping(); string punycodeDomainName = idnMapping.GetAscii("кто.рф"); Console.WriteLine(punycodeDomainName); } } }
Конвертация punycode в unicode:
using System; using System.Globalization; namespace Punycode { class Program { static void Main(string[] args) { IdnMapping idnMapping = new IdnMapping(); string unicodeDomainName = idnMapping.GetUnicode("xn--j1ail.xn--p1ai"); Console.WriteLine(unicodeDomainName); } } }
Также вы можете использовать перегруженные реализации методов GetAscii и GetUnicode:
GetAscii(string unicode, int startIndex)
GetUnicode(string punycode, int startIndex)
Данные методы принимают на вход строку и начало смещения, с которого необходимо преобразовывать строку.
GetAscii(string unicode, int startIndex, int count)
GetUnicode(string punycode, int startIndex, int count)
Данные методы принимают на вход строку, начало смещения и количество символов, которые необходимо использовать из исходной строки.