decode
(- নিচে দেখুন, যদি না আপনি কোনো কারণে একটি ইউনিকোড স্ট্রিং মধ্যে কিছু অ-পাঠ্য তথ্য আছে) ইউনিকোড স্ট্রিং পদ্ধতি সত্যিই সব যে কোনো অ্যাপ্লিকেশন নেই। এটি মূলত historicalতিহাসিক কারণে রয়েছে বলে আমি মনে করি। পাইথন 3 এ এটি সম্পূর্ণরূপে চলে গেছে।
unicode().decode()
একটি অন্তর্নিহিত সঞ্চালন করা হবে এনকোডিং এর s
ডিফল্ট (ASCII) কোডেক ব্যবহার করে। এটি যাচাই করুন:
>>> s = u'ö'
>>> s.decode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 0:
ordinal not in range(128)
>>> s.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 0:
ordinal not in range(128)
ত্রুটির বার্তাগুলি হুবহু একই।
জন্য str().encode()
এটা অন্য উপায় কাছাকাছি - এটি একটি অন্তর্নিহিত প্রচেষ্টা পাঠোদ্ধারতা এর s
ডিফল্ট এনকোডিং সঙ্গে
>>> s = 'ö'
>>> s.decode('utf-8')
u'\xf6'
>>> s.encode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0:
ordinal not in range(128)
এটির মতো ব্যবহৃত হয়, str().encode()
অতিরিক্ত ব্যবহারের জন্যও।
তবে পরবর্তী পদ্ধতিটির জন্য আরও কার্যকর একটি কার্যকর প্রয়োগ রয়েছে: এমন এনকোডিংগুলি রয়েছে যা চরিত্রের সেটগুলির সাথে কোনও সম্পর্ক রাখে না এবং এইভাবে 8-বিট স্ট্রিংগুলিকে অর্থবহ উপায়ে প্রয়োগ করা যেতে পারে:
>>> s.encode('zip')
'x\x9c;\xbc\r\x00\x02>\x01z'
যদিও আপনি ঠিক বলেছেন: এই অ্যাপ্লিকেশনটির জন্য "এনকোডিং" এর দ্ব্যর্থক ব্যবহারটি হ'ল ... অবাক। আবার পাইথন 3 এ পৃথক byte
এবং string
প্রকারের সাথে এটি আর সমস্যা নয় an