में डोमेन नामों को idn में परिवर्तित करना मेरे पास डोमेन नामों की एक लंबी सूची है जिसे मुझे कुछ रिपोर्ट जेनरेट करने की आवश्यकता है। इस सूची में केवल IDN डोमेन हैं, और यद्यपि मैं कैसे कमांड लाइन पर अजगर में उन्हें बदलने के लिए पता है:पाइथन
>>> domain = u"pfarmerü.com"
>>> domain
u'pfarmer\xfc.com'
>>> domain.encode("idna")
'xn--pfarmer-t2a.com'
>>>
मैं इसे पाठ फ़ाइल से एक छोटे से स्क्रिप्ट को पढ़ने के डेटा के साथ काम करने के लिए प्राप्त करने के लिए संघर्ष कर रहा हूँ।
$ ./idn.py ./test
pfarmer.com
<type 'unicode'>
IDN: pfarmer.com
pfarmerü.com
Traceback (most recent call last):
File "./idn.py", line 9, in <module>
domain = unicode(line.strip())
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 7: ordinal not in range(128)
मैं भी कोशिश की है:
#!/usr/bin/python
import sys
import codecs
infile = codecs.open(sys.argv[1], "r", "utf8")
for line in infile:
print line,
domain = line.strip()
print type(domain)
print "IDN:", domain.encode("idna")
print
कौन मुझे दिया:
#!/usr/bin/python
import sys
infile = open(sys.argv[1])
for line in infile:
print line,
domain = unicode(line.strip())
print type(domain)
print "IDN:", domain.encode("idna")
print
मैं निम्नलिखित आउटपुट प्राप्त
$ ./idn.py ./test
Traceback (most recent call last):
File "./idn.py", line 8, in <module>
for line in infile:
File "/usr/lib/python2.6/codecs.py", line 679, in next
return self.reader.next()
File "/usr/lib/python2.6/codecs.py", line 610, in next
line = self.readline()
File "/usr/lib/python2.6/codecs.py", line 525, in readline
data = self.read(readsize, firstline=True)
File "/usr/lib/python2.6/codecs.py", line 472, in read
newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-5: unsupported Unicode code range
यहाँ मेरी परीक्षण डेटा फ़ाइल है:
pfarmer.com
pfarmerü.com
मुझे अब यूनिकोड को समझने की मेरी आवश्यकता के बारे में बहुत जानकारी है।
धन्यवाद,
पीटर