পাইথন 3 এ কি আমার এনকোডিং ঘোষণা ব্যবহার করা উচিত?


114

পাইথন 3 ডিফল্টরূপে উত্স-কোড ফাইলগুলির জন্য ইউটিএফ -8 এনকোডিং ব্যবহার করে। আমি কি প্রতিটি উত্স ফাইলের শুরুতে এনকোডিং ঘোষণাটি ব্যবহার করব? মত# -*- coding: utf-8 -*-

উত্তর:


112

ডিফল্টটি ইউটিএফ -8 হ'ল , যখন আপনি ডিফল্ট থেকে বিচ্যুত হন তখনই বা সেই তথ্যটি ব্যবহার করার জন্য আপনি যদি অন্য সরঞ্জামগুলিতে (আপনার আইডিই বা পাঠ্য সম্পাদক হিসাবে) নির্ভর হন তবে আপনাকে কেবল সেই ঘোষণাটি ব্যবহার করতে হবে।

অন্য কথায়, পাইথনের যতদূর , কেবলমাত্র যখন আপনি কোনও এনকোডিং ব্যবহার করতে চান যা আলাদা হয় তখন আপনাকে সেই ঘোষণাটি ব্যবহার করতে হবে।

অন্যান্য সরঞ্জাম, যেমন আপনার সম্পাদক, অনুরূপ সিনট্যাক্সকে সমর্থন করতে পারে, এজন্যই পিইপি 263 স্পেসিফিকেশন সিনট্যাক্সে যথেষ্ট নমনীয়তার জন্য অনুমতি দেয় (এটি অবশ্যই একটি মন্তব্য codingহতে হবে, পাঠ্যটি অবশ্যই সেখানে থাকতে হবে, যার পরে একটি :বা =অক্ষর এবং alচ্ছিক সাদা স্থান, একটি স্বীকৃত কোডেক এর পরে)।

মনে রাখবেন যে পাইথন উত্স কোডটি কীভাবে পড়ে তা কেবল এটির ক্ষেত্রেই প্রযোজ্য । কোডটি কার্যকর করার ক্ষেত্রে এটি প্রযোজ্য নয়, সুতরাং মুদ্রণ, ফাইল খোলার ক্ষেত্রে বা অন্য কোনও আই / ও অপারেশন কীভাবে বাইটস এবং ইউনিকোডের মধ্যে অনুবাদ করে। পাইথন, ইউনিকোড এবং এনকোডিং সম্পর্কিত আরও তথ্যের জন্য, আমি আপনাকে দৃ strongly়ভাবে অনুরোধ করছি পাইথন ইউনিকোড হাওটো , বা নেড ব্যাচেল্ডারের খুব পুঙ্খানুপুঙ্খ প্র্যাকমেটিক ইউনিকোড টক পড়তে ।


28
# -*- coding: utf-8 -*-এখনও দরকারী কিছু সম্পাদকদের স্যুইচ করতে হতে পারে বলে আশা করা এনকোডিং সোর্স ফাইল সম্পাদনার সময়।
পিআরপি

1
@ পেপার একটি বাইট অর্ডার মার্ক একই কাজ করতে পারে, না?
এন্ডোলিথ

12
@endolith: হল UTF-8 BOM এই পৃথিবীতে ঘৃণার পাত্র মাইক্রোসফট .. দেখুন দ্বারা ঘোষণা আনা হয় en.wikipedia.org/wiki/Byte_order_mark#UTF-8
Martijn Pieters

1
@ মার্তিজজনপিটার্স আপনার লিঙ্কটি আপনার সাথে একমত বলে মনে হচ্ছে না
এন্ডোলিথ

2
@ এন্ডোলিথ: না, ডব্লিউপি নিবন্ধটি কেবল পটভূমির সংক্ষিপ্তসার করে, এটি আমার নিজের মতামত যে এটি একটি ঘৃণা। একটি বিওএমের মূল বিষয় হচ্ছে বাইট অর্ডারটি রেকর্ড করা (অতএব নামটি বাইট অর্ডার মার্ক)। ইউটিএফ -8 এ কোনও বাইট অর্ডার বিভ্রান্তি নেই, কেবল এটি ইউটিএফ -16 এবং ইউটিএফ -32 এ রয়েছে in মানটি ইতিমধ্যে পুনরায় উদ্দেশ্যযুক্ত শূন্য-প্রস্থের নন-ব্রেক স্পেস অক্ষর (সহজ, দুর্ঘটনাজনিত মুদ্রণের পরে সম্পূর্ণ অদৃশ্য আউটপুট দিয়ে শেষ হবে), এটি আমার যাদুতে স্থির হতে পুনরায় ব্যবহার করা ভুল, আমার দৃষ্টিতে।
মার্টিজন পিটারস

6

না, যদি:

  • পুরো প্রকল্পটি কেবলমাত্র ব্যবহার করে UTF-8, এটি একটি ডিফল্ট।
  • এবং আপনি নিশ্চিত যে আপনার আইডিই সরঞ্জামটির প্রতিটি ফাইলে সেই এনকোডিং ঘোষণার প্রয়োজন হয় না।

হ্যাঁ যদি

  • আপনার প্রকল্প বিভিন্ন এনকোডিং উপর নির্ভর করে
  • বা অনেকগুলি এনকোডিংয়ের উপর নির্ভর করে।

মাল্টি-এনকোডিং প্রকল্পগুলির জন্য:

কিছু ফাইল যদি এনকোড করা থাকে non-utf-8, তবে এই এনকোডযুক্তগুলির জন্য UTF-8আপনার এনকোডিং ঘোষণাও যুক্ত করা উচিত, কারণ স্বর্ণের নিয়মটি হ'লExplicit is better than implicit.

রেফারেন্স:

  • পাইচার্মের এই ঘোষণার দরকার নেই:

পাইচার্মে নির্দিষ্ট ফাইলের জন্য এনকোডিং কনফিগার করা

  • ভিমের সেই ঘোষণার দরকার নেই, তবে:
# vim: set fileencoding=<encoding name> :
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.