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"

Другие вопросы по тегам