python2.7.5 encodings.idna不存在

时间:2013-11-15 09:31:37

标签: python encoding dns

警告:我必须在这个项目中使用python 2.7.5。

我的问题如下: 我正在尝试将以IDN-Form(例如müller.de)表示的umlaut-domain转换为ACE-String(例如xn--mller-kva.de)。 阅读官方python文档,我发现encodings.idna应该在python 2.3中引入。 无论我通过encodings.idna做什么似乎都找不到dir(encodings)

['CodecRegistryError',
 '__builtin__',
 '__builtins__',
 '__doc__',
 '__file__',
 '__name__',
 '__package__',
 '__path__',
 '_aliases',
 '_cache',
 '_import_tail',
 '_norm_encoding_map',
 '_unknown',
 'aliases',
 'ascii',
 'codecs',
 'hex_codec',
 'normalize_encoding',
 'search_function',
 'utf_8']

我在这里错了什么?

提前致谢!

1 个答案:

答案 0 :(得分:2)

只需使用unicode_object.encode('idna')

>>> import encodings
>>> encodings.idna
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'idna'
>>> u'müller.de'.encode('idna')
'xn--mller-kva.de'
>>> encodings.idna
<module 'encodings.idna' from '/usr/lib/python2.7/encodings/idna.pyc'>

在使用它或显式导入之前,似乎不会导入它。

>>> import encodings
>>> encodings.idna
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'idna'
>>> import encodings.idna
>>> encodings.idna
<module 'encodings.idna' from '/usr/lib/python2.7/encodings/idna.pyc'>