অন্যরা যেমন বলেছে, # coding:উত্স ফাইলটি এনকোডিংটি সংরক্ষিত হয়েছে তা নির্দিষ্ট করে। এখানে এটি উদাহরণস্বরূপ কয়েকটি উদাহরণ দেওয়া হল:
একটি ফাইল সিপি 437 (আমার কনসোল এনকোডিং) হিসাবে ডিস্কে সংরক্ষণ করা হয়েছে, তবে কোনও এনকোডিং ঘোষিত হয়নি
b = 'über'
u = u'über'
print b,repr(b)
print u,repr(u)
আউটপুট:
File "C:\ex.py", line 1
SyntaxError: Non-ASCII character '\x81' in file C:\ex.py on line 1, but no
encoding declared; see http://www.python.org/peps/pep-0263.html for details
# coding: cp437যুক্ত ফাইলের আউটপুট :
über '\x81ber'
über u'\xfcber'
প্রথমে পাইথন এনকোডিংটি জানত না এবং এএসসিআইআই-র চরিত্র সম্পর্কে অভিযোগ করেছিল। একবার এটি এনকোডিংটি জানার পরে, বাইট স্ট্রিংটি বাইটগুলি পেয়েছিল যা আসলে ডিস্কে ছিল। ইউনিকোড STRING এর জন্য, পাইথন, \ x81 পড়া জানতেন যে cp437 যে একটি ছিল ü , এবং ইউনিকোড কোডপয়েন্ট সেটিকে সঙ্কেতমুক্ত ü যা U + এ 00FC হয়। বাইট স্ট্রিংটি মুদ্রিত হলে পাইথন হেক্স মানটি 81সরাসরি কনসোলে প্রেরণ করে । যখন ইউনিকোড স্ট্রিং ছাপা হত, পাইথন সঠিকভাবে cp437 হিসাবে আমার এনকোডিং কনসোল শনাক্ত ইউনিকোড অনূদিত ü জন্য cp437 মান ü ।
ইউটিএফ -8 এ একটি ফাইল ঘোষিত ও সংরক্ষণের সাথে কী ঘটে তা এখানে:
├╝ber '\xc3\xbcber'
über u'\xfcber'
ইউটিএফ -8 এ, ü হেক্স বাইট হিসাবে এনকোড করা হয়েছে C3 BC, সুতরাং বাইট স্ট্রিংটিতে সেই বাইট রয়েছে তবে ইউনিকোড স্ট্রিংটি প্রথম উদাহরণের মতো। পাইথন দুটি বাইট পড়ে সেটিকে সঠিকভাবে ডিকোড করে। পাইথন বাইট স্ট্রিংটি ভুলভাবে মুদ্রণ করেছিল, কারণ এটি দুটি ইউটিএফ -8 বাইট প্রেরণ করে ü সরাসরি আমার সিপি 437 কনসোলে।
এখানে ফাইলটি সিপি 437 হিসাবে ঘোষিত হয়েছে, তবে ইউটিএফ -8 এ সংরক্ষিত হয়েছে:
├╝ber '\xc3\xbcber'
├╝ber u'\u251c\u255dber'
বাইট স্ট্রিংটি তখনও ডিস্কে বাইটস (ইউটিএফ -8 হেক্স বাইটস C3 BC) পেয়েছে , তবে তাদের একক ইউটিএফ -8-এনকোডেড অক্ষরের পরিবর্তে দুটি সিপি 437 অক্ষর হিসাবে ব্যাখ্যা করেছে। এই দুটি অক্ষর যেখানে ইউনিকোড কোড পয়েন্টগুলিতে অনুবাদ হয়েছে এবং সমস্ত কিছু ভুলভাবে মুদ্রণ করে।
# coding: utf8যথেষ্ট ভাল, কোনও প্রয়োজন নেই-*-