utf-8 - если симовол ascII, то под символ занимает 8 бит, иначе 16 бит ( в большинстве случаев )
unicode - все символы занимают по 16 бит
в примере 2 теста:
1) сравнение строк с использованием русских букв
2) сравнение аски2 строк
результат:
1. в первом тесте правильно - выпадает предупреждение и результат “no”
2. воторой тест проходит гладко и результат “yes”! - почему? строки же разные utf8 - знимает 4 байта, а unicode - 8 байт
#!/usr/bin/python
# -*- coding: utf-8 -*-
def test1():
utf8 = 'testТест'
uni = u'testТест'
if utf8==uni:
print 'yes'
else:
print 'no'
def test2():
utf8 = 'test'
uni = u'test'
if utf8==uni:
print 'yes'
else:
print 'no'
if __name__ == '__main__':
test1()
test2()