Русские буквы в Django

Привыкнув к Java, с её идеей о том что все строки всегда хранятся в Unicode, я сильно парюсь в Python.

Гдето чтото не так написал, или не сконвертировал из нужной кодировки в другую нужную, и все, и все полетело 🙁 Вот тут, в Django, например, чтобы заменить регекспом строку на русском, надо делать так:

#-*- coding: cp1251 -*-
import re
instr = unicode(req.POST['param'], 'utf-8')
pat = re.compile(u'этоубрать', re.U)
instr = re.sub(pat, '_', instr)

а при выплевывании на страницу надо так

messages.append(unicode('Наше сообщение', 'cp1251').encode('utf-8'))

А я все то там, то тут пропускаю, то unicode () то encode () не в том месте, а они все поочереди идут, на выходе непонятно что получается 🙁 Теперь разобрался вроде.

  • http:// LXj

    > messages.append (unicode ('Наше сообщение', 'cp1251').encode ('utf-8'))

    А не проще ли исходник изначально в utf-8 писать?

  • http:// igor

    честно? непривычно исходник в UTF-8 писать...

    да и вообще непонятно как оно потом себя поведет 🙂

  • http:// валерий

    Нормально себя исходник UTF-8 ведет. Хреново себя ведет Django, уже давно пора всё перевести внутри в unicode, но это еще не скоро будет

  • http:// dvs

    Хорошо хоть в Python 3000 обещают всё в Unicode перевести...

  • http:// illya

    А на кой вас CP1251 ?

    системная локаль? вендузятнег?

    Я сто лет как избавился от всех кодировок проме 1251

    и проблем не чую

  • http:// Сергей Шепелев

    У вас опечатка: cp-1251 надо исправить на utf-8. 🙂

    Ведет себя отлично. Несколько лет пишу любые тексты (почта, IM, код, HTML) только в этой кодировке. Никаких проблем нигде не было.