IDNA не туда-обратно
У меня есть несколько строк в кодировке IDNA, которые я не могу декодировать. В Python я пытаюсь u"xn--grohandel-shop-2fb".decode("idna")
и получите ошибку "IDNA не туда-обратно". То же самое для "xn--sottmqqo5-lgbe9b7no0hmz9u"
,
Я в тупике, и поиск в Google ошибки не помогает вообще.
1 ответ
Ошибка "IDNA не идет в обе стороны" означает, что модуль получает другой результат при декодировании и кодировании строки.
При просмотре исходного кода для модуля IDNA в Python в строке 139 возникает ошибка "IDNA не идет в оба конца", если модуль не может воссоздать ввод. В функции декодирования вход разделяется на точки, и каждая часть преобразуется в toUnicode
, Там текст декодируется, но перед возвращением результата он кодирует результат и сравнивает его с входными данными и выдает ошибку, если она не совпадает: "он не туда-обратно" или encode(decode(text)) != text
,
In the error message you also get the two strings that it tried to compare, in the first example you get:
UnicodeError: ('IDNA does not round-trip', 'xn--grohandel-shop-2fb', 'grosshandel-shop')
You get the error because it has converted ß
in "großhandel-shop" to ss
in "grosshandel-shop". ß
character was added to the .de
-tld late 2010, so this is a bug. Before the change ß
was supposed to be changed to ss
,
Your second example is probably corrupt, because it converts to: "đsottĤmqĐqǗoĔ⢠5"