ত্রুটি বার্তা আপনাকে জানায় ঠিক কী হয়েছে। পাইথন দোভাষীকে নন-এএসসিআইআই অক্ষরের এনকোডিংটি জানতে হবে।
আপনি যদি ইউ +00 এ 3 ফিরে আসতে চান তবে আপনি বলতে পারেন
return u'\u00a3'
যা ইউনিকোড এস্কেপ ক্রমের মাধ্যমে খাঁটি ASCII এ এই চরিত্রটি উপস্থাপন করে। আপনি যদি আক্ষরিক বাইট 0xA3 সমন্বিত একটি বাইট স্ট্রিং ফিরে আসতে চান, এটি that's
return b'\xa3'
(যেখানে পাইথন 2 এ b
অন্তর্নিহিত; তবে অন্তর্নিহিতের চেয়ে সুস্পষ্টই ভাল)।
ত্রুটি বার্তায় লিঙ্কযুক্ত পিইপি আপনাকে পাইথনকে ঠিক কীভাবে বলতে হয় নির্দেশ দেয় "এই ফাইলটি খাঁটি এএসসিআইআই নয়; এখানে আমি ব্যবহার করছি এমন এনকোডিংটি রয়েছে"। যদি এনকোডিংটি ইউটিএফ -8 হয় তবে তা হবে
# coding=utf-8
বা Emacs- সামঞ্জস্যপূর্ণ
# -*- encoding: utf-8 -*-
যদি আপনি জানেন না যে আপনার সম্পাদকটি কোন এনকোডিংটি এই ফাইলটি সংরক্ষণ করতে ব্যবহার করে, তবে এটি একটি হেক্স সম্পাদক এবং কিছু গুগলিংয়ের মতো পরীক্ষা করুন। স্ট্যাক ওভারফ্লোঅক্ষর এনকোডিংট্যাগটিতে আরও তথ্য এবং কিছু সমস্যা সমাধানের টিপস সহ একটি ট্যাগ তথ্য পৃষ্ঠা রয়েছে।
এত কথায়, 7-বিট ASCII পরিসীমা (0x00-0x7F) এর বাইরে পাইথন বাইটের ক্রমটি কী স্ট্রিং উপস্থাপন করে তা অনুমান করতে পারে না এবং তাও করতে পারে না। https://tripleee.github.io/8bit#a3 বাইট 0xA3 এর 21 টি সম্ভাব্য ব্যাখ্যা দেখায় এবং এটি কেবল উত্তরাধিকার 8-বিট এনকোডিংগুলি থেকে; তবে এটি মাল্টি-বাইট এনকোডিংয়ের প্রথম বাইটও হতে পারে। তবে বাস্তবে, আমি অনুমান করব যে আপনি আসলে ল্যাটিন -১ ব্যবহার করছেন, সুতরাং আপনার উচিত should
# coding: latin-1
আপনার উত্স ফাইলের প্রথম বা দ্বিতীয় লাইন হিসাবে। যাইহোক, বাইট কোন চরিত্রটি উপস্থাপন করে বলে ধারণা করা ছাড়া, কোনও মানুষ এটি অনুমান করতেও সক্ষম হবে না।
একটি সতর্কতামূলক: coding: latin-1
ত্রুটি বার্তাটি অবশ্যই মুছে ফেলবে (কারণ এমন কোনও বাইট অনুক্রম নেই যা প্রযুক্তিগতভাবে এই এনকোডিংয়ে অনুমোদিত নয়), তবে কোডটি ব্যাখ্যা করা হলে পুরোপুরি ভুল ফলাফল তৈরি করতে পারে যদি প্রকৃত এনকোডিং অন্য কিছু হয়। আপনি যখন এনকোডিং ঘোষণা করবেন তখন আপনাকে অবশ্যই সত্যতার সাথে ফাইলের এনকোডিংটি জানতে হবে।