4

デコードできない IDNA でエンコードされた文字列がいくつかあります。Python では、u"xn--grohandel-shop-2fb".decode("idna")「IDNA はラウンドトリップしません」というエラーが表示されます。についても同じです"xn--sottmqqo5-lgbe9b7no0hmz9u"

私は困惑しており、エラーをグーグルで調べてもまったく役に立ちません。

4

1 に答える 1

5

「IDNA does not round-trip」というエラーは、モジュールが文字列をデコードおよびエンコードするときに異なる結果を取得することを意味します。

Python の IDNA モジュールのソース コードを見ると、モジュールが入力を再作成できない場合、139 行目で「IDNA は往復しません」というエラーが発生します。デコード機能では、入力はドットで分割され、すべての部分が に変換されtoUnicodeます。そこでテキストがデコードされますが、結果が返される前に結果がエンコードされ、入力と比較され、同じでない場合はエラーが発生します:「往復しません」またはencode(decode(text)) != text.

エラー メッセージには、比較しようとした 2 つの文字列も表示されます。最初の例では、次のようになります。

UnicodeError: ('IDNA does not round-trip', 'xn--grohandel-shop-2fb', 'grosshandel-shop')

ß「großhandel-shop」で「grosshandel-shop」に変換されたため、エラーが発生しますssこのßキャラクターは.de2010 年後半に -tldに追加されたため、これはバグです。変更前は に変更ßされるはずでしたss

2 番目の例は、「đsottĤmqĐqǗoĔ⢠5」に変換されるため、おそらく破損しています。

于 2012-05-18T05:07:03.500 に答える