অন্যরা যেমন বলেছে, # 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
যথেষ্ট ভাল, কোনও প্রয়োজন নেই-*-