デコードできないIDNAでエンコードされた文字列があります。 Pythonでは、私はu"xn--grohandel-shop-2fb".decode("idna")
を試して、 "IDNAは往復しません"というエラーを受け取ります。 "xn--sottmqqo5-lgbe9b7no0hmz9u"
と同じです。IDNAは往復しません
私は困惑しており、エラーのグーグルリングはまったく役に立たない。
デコードできないIDNAでエンコードされた文字列があります。 Pythonでは、私はu"xn--grohandel-shop-2fb".decode("idna")
を試して、 "IDNAは往復しません"というエラーを受け取ります。 "xn--sottmqqo5-lgbe9b7no0hmz9u"
と同じです。IDNAは往復しません
私は困惑しており、エラーのグーグルリングはまったく役に立たない。
"IDNAはラウンドトリップしません"というエラーは、文字列をデコードしてエンコードする際にモジュールが異なる結果を取得することを意味します。
PythonのIDNAモジュール用にsource codeを見ると、モジュールが入力を再作成できない場合、エラー "IDNA does not round-trip"が139行目に生成されます。デコード機能では、入力はドットで分割され、すべての部分はtoUnicode
に変換されます。テキストはデコードされますが、結果が返される前に結果がエンコードされ、入力と比較され、同じでない場合はエラーが発生します: "往復しません"またはencode(decode(text)) != text
。
:
UnicodeError: ('IDNA does not round-trip', 'xn--grohandel-shop-2fb', 'grosshandel-shop')
それが「GROSSHANDELショップ」でß
を変換しているので、あなたがエラーを取得します"grosshandel-shop"のss
。 The ß
character was added to the .de
-tld late 2010、これはバグです。変更前ß
はss
に変更されていたはずです。それが変換されるため
あなたの第二の例は、に、おそらく破損している:「đsottĤmqĐqǗoĔ⢠5」
XN - grohandelショップ-2FBは正しくしばらく以来、ドイツ/ DENICに正しいIDNA 2008(によって符号化されています)。あなたのPythonは、 'ß'を知らない古いIDNA 2003を使ってそれを解読しようとするでしょう。 https://www.denic.de/en/know-how/idn-domains/ – rockdaboot
私はバグレポートを作成しました:https://bugs.python.org/issue32437 – socketpair