У меня есть рабочий URL с Unicode и я пытаюсь применить кодировку IDNA
test = ur"http://example.com/%D0%94%D0%B8%D1%81%D0%BA%D0%BE%D0%BD%D1%82-%D1%82%D0%B0%D0%BA%D1%81%D0%B8.22219/" url_unq = urllib.unquote(test) print url_unq print url_unq.encode("idna")
Приведенный выше код завершается с:
Файл "C: \ Python25 \ lib \ encodings \ idna.py", строка 38, в nameprep поднять UnicodeError («Недопустимый символ% r»% c) UnicodeError: Недопустимый символ u '\ x94'
Что не так с моими кодировками?
Это потому, что \x94 не может быть закодирован в IDNA - см. RFC3454 :
\x94
0080-009F; [КОНТРОЛЬНЫЕ ХАРАКТЕРЫ]