python – IDNA不会往返
作者:互联网
我有一些IDNA编码的字符串,我无法解码.在Python中,我尝试你“xn – grohandel-shop-2fb”.decode(“idna”)并得到错误“IDNA不能往返”. “xn – sottmqqo5-lgbe9b7no0hmz9u”也是如此.
我很难过,谷歌搜索错误根本没有帮助.
解决方法:
错误“IDNA不往返”意味着模块在解码和编码字符串时获得不同的结果.
通过查看source code for Python的IDNA模块,如果模块无法重新创建输入,则会在第139行引发错误“IDNA不会往返”.在解码功能中,输入按点分割,每个部分都转换为Unicode.文本被解码,但在返回结果之前,它会对结果进行编码并将其与输入进行比较,如果不相同则引发错误:“它不会往返”或编码(解码(文本)) )!=文字.
在错误消息中,您还会获得它尝试比较的两个字符串,在第一个示例中,您获得:
UnicodeError: ('IDNA does not round-trip', 'xn--grohandel-shop-2fb', 'grosshandel-shop')
你得到错误是因为它已经将“großhandel-shop”中的ß转换为“grosshandel-shop”中的ss. The ß
character was added to the .de
-tld late 2010,所以这是一个错误.在改变之前ß应该被改为ss.
你的第二个例子可能是腐败的,因为它转换为:“đsottĤmqĐqǗoĔĔ5”
标签:python,idn,punycode 来源: https://codeday.me/bug/20190621/1250588.html