我的问题如下:
我正在尝试将以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']
我在这里错了什么?
提前致谢!
答案 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'>