Это не имеет ничего общего с кодировкой.Python просто показывает вам в оболочке значение, которое вы только что дали, в более буквальном смысле.Попробуйте вместо этого:
a = b'\xce\xb8'
print(a)
результат:
θ
Таким образом, «a» действительно кодируется как UTF-8, как вы и ожидали.Вы просто неправильно истолковываете то, что Python выводит обратно на консоль.
Кстати, вы также, я думаю, не делаете то, что, как вы думаете, вы используете с префиксом 'b'.Похоже, вы используете Python 2.X.В этой версии Python префикс 'b' игнорируется.Я знаю это, потому что это не проявляется в отраженном результате.Смотрите здесь:
Python 2.x:
>>> b'\xce\xb8'
'\xce\xb8'
Python 3.X
>>> b'\xce\xb8'
b'\xce\xb8'
Так что в Python 2.X вы получите тот же результатс и без «б».В Python 3.X вы получаете в любом случае другое поведение, чем в Python 2.X.Я мало что сделал с Python 3.X, но я считаю, что это потому, что представление строк изменилось в 3.X.
PS: Если вам действительно все равно, как Python возвращает вам строки, я не знаю, есть ли способ изменить это.Интересно, однако, почему это важно для вас.