একটি স্ট্রিং হলো ক্যারেক্টারের সিকোয়েন্স; এগুলো একটি অ্যাবস্ট্রাক্ট কনসেপ্ট, এবং ডিস্কে সরাসরি স্টোর করা যায় না। একটি বাইট স্ট্রিং হলো বাইটের সিকোয়েন্স — যেগুলো ডিস্কে স্টোর করা যায়। এদের মধ্যে ম্যাপিং হলো একটি এনকোডিং — এনকোডিং অনেক প্রকার আছে (অনন্তও সম্ভব) — এবং কনভার্সন করার জন্য আপনাকে জানতে হবে কোন এনকোডিং প্রয়োজ্য, কারণ ভিন্ন এনকোডিং একই বাইটকে ভিন্ন স্ট্রিং-এ ম্যাপ করতে পারে। উদাহরণস্বরূপ, একই বাইট স্ট্রিং দুটি ভিন্ন এনকোডিং-এ দুটি ভিন্ন স্ট্রিং বোঝাতে পারে।
উদাহরণ
>>> b'\xcf\x84o\xcf\x81\xce\xbdo\xcf\x82'.decode('utf-16')
'蓏콯캁澽苏'
>>> b'\xcf\x84o\xcf\x81\xce\xbdo\xcf\x82'.decode('utf-8')
'τoρνoς'
যখন আপনি জানেন কোন এনকোডিং ব্যবহার করতে হবে, তখন বাইট স্ট্রিং-এর .decode() মেথড ব্যবহার করে সঠিক ক্যারেক্টার স্ট্রিং পেতে পারেন। ক্যারেক্টার স্ট্রিং-এর .encode() মেথড বিপরীত দিয়ে কাজ করে এবং ক্যারেক্টার স্ট্রিংকে বাইট স্ট্রিং-এ এনকোড করে।