Обычно я бы воздерживался от добавления любых символов, не закодированных в ascii, в исходный код.
Несмотря на то, что интерпретатор python будет учитывать исходный файл с заголовком UTF-8, проблема заключается в том, что текстовые редакторы, оболочки, операционные системы и некоторые разработчики, не имеющие отношения к UTF-8, в конечном итоге будут повреждены Ваши тщательно обработанные строки Unicode.
Я бы остановился на наборе символов только ASCII в любом исходном файле, поскольку он практически везде поддерживается повсеместно, и поэтому вы не столкнетесь с искажением исходного кода.
Вы почти у цели с вашей экранированной строкой Юникода.
В python вам просто нужно поставить перед собой.
т.е..
u'Soci \ u00E9t \ u00E9'
В противном случае python будет рассматривать большинство символов, перечисленных выше, как буквенные символы, а не как предполагаемые escape-символы Юникода.
Простой способ проверить правильность вашей строки в кодировке Unicode или двоичной строки (которая представляет собой строку без u перед ней) - запустить интерпретатор python и напечатать его:
>>> print 'Soci\u00E9t\u00E9'
Soci\u00E9t\u00E9 #ewwwwwww
>>> print u'Soci\u00E9t\u00E9'
Société #yay!!!
Примечание. Для вышеупомянутого теста ваша оболочка лучше поддерживает UTF-8 (если вы вошли локально на Mac, вероятно, так и есть) ... в противном случае вывод на печать будет бессмысленным. Это нормально, равно как и правильная тарабарщина (т. Е. Ваша входная строка была отформатирована в идеальном смысле).
Если у вас нет промежуточного программного обеспечения или других методов, которые неправильно работают с юникодом между вашей функцией представления и рендерингом, Django должен правильно выводить вашу строку юникода просто отлично.
Кстати, хорошая практика - ставить перед вами все ваши строки.
«Это тест» так же хорошо, как «это тест».
Разница в том, что любые операции по обработке строк, включающие строку, обозначенную юникодом (например, u'this + "test"), сообщают Python, что он знает о юникоде.
Да, в некотором смысле, python по умолчанию является юникодом немым. Как некоторые текстовые редакторы! :)
'u', волшебный соус