0
做一個Unicode的主機名DNS解析返回如下:轉換` 195 164`爲'U' xc4'` - 結果從DNS解析器回爲Unicode
'\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
lib和codecs
,發現沒有任何工作。
這不是一個有效的DNS名稱,DNS中的國際字母必須在punycode('xn --...')中編碼。那麼你是如何檢索這些數據的? –
@KlausD。感謝您的回覆,添加了在那裏使用的Python代碼... – Dekel
請發表'repr(get_name(ip_address))',這樣我們就知道我們正在處理的是什麼'str'。 – unutbu