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

7 февраля 2006

Привыкнув к 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 () не в том месте, а они все поочереди идут, на выходе непонятно что получается :( Теперь разобрался вроде.

6 Комментариев на “Русские буквы в Django”

  1. LXj сказал:

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

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

  2. igor сказал:

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

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

  3. валерий сказал:

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

  4. dvs сказал:

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

  5. illya сказал:

    А на кой вас CP1251 ?

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

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

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

  6. Сергей Шепелев сказал:

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

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

Оставьте свое мнение

XHTML: Вы можете использовать следующие html теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> Если в комментарии пишете XML то вместо "<" используйте "&lt;"

Благодарности, комментарии не по теме и пр. спам ссылками удаляется, к тому же автоматически, можете не стараться.