【发布时间】:2018-03-20 17:27:16
【问题描述】:
对 unicode-hostname 进行 DNS 解析会返回以下内容:
'\195\164\195\182\195\188o.mydomain104.local.'
\195\164 实际上是以下 unicode 字母:Ä (u'\xc4')。
原来的主机名是:
ÄÖÜO.mydomain104.local
我正在寻找一种方法将其转换回 unicode 字符串(在 python2.7 中)
如果需要原始代码,如下所示:
from dns import resolver, reversename
from dns.exception import DNSException
def get_name(ip_address):
answer = None
res = resolver.Resolver()
addr = reversename.from_address(ip_address)
try:
answer = res.query(addr, "PTR")[0].to_text().decode("utf-8")
except DNSException:
pass
return answer
我查看了
.encode和.decode、unicodedata库和codecs,但没有发现任何有用的东西。
【问题讨论】:
-
这不是一个有效的 DNS 名称,DNS 中的国际字母必须用 punycode (
xn--...) 编码。那么您是如何检索这些数据的呢? -
@KlausD。感谢您的回复,添加了那里使用的python代码...
-
请发布
repr(get_name(ip_address)),以便我们确切知道我们正在处理的str。
标签: python python-2.7 unicode encoding character-encoding