Ошибка «IDNA не в обоих направлениях» означает, что модуль получает другой результат при декодировании и кодировании строки.
Если посмотреть на исходный код для модуля IDNA Python, то в строке 139 возникает ошибка «IDNA не туда-обратно», если модуль не может воссоздать ввод. В функции декодирования вход разделяется на точки, и каждая часть преобразуется в toUnicode
. Там текст декодируется, но перед возвращением результата он кодирует результат и сравнивает его с входными данными и выдает ошибку, если она не совпадает: «он не туда-обратно» или encode(decode(text)) != text
.
В сообщении об ошибке вы также получите две строки, которые он пытался сравнить, в первом примере вы получите:
UnicodeError: ('IDNA does not round-trip', 'xn--grohandel-shop-2fb', 'grosshandel-shop')
Вы получаете ошибку, потому что она преобразовала ß
в "großhandel-shop" в ss
в "grosshandel-shop". Символ ß
был добавлен в .de
-tld в конце 2010 , так что это ошибка. До изменения ß
предполагалось изменить на ss
.
Ваш второй пример, вероятно, поврежден, поскольку он преобразуется в: "đsottĤmqĐqǗoĔ ⢠5"