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

февраля 24, 2006 в 10:42
> messages.append (unicode ('Наше сообщение', 'cp1251').encode ('utf-8'))
А не проще ли исходник изначально в utf-8 писать?
февраля 24, 2006 в 18:49
честно? непривычно исходник в UTF-8 писать...
да и вообще непонятно как оно потом себя поведет
марта 28, 2006 в 12:56
Нормально себя исходник UTF-8 ведет. Хреново себя ведет Django, уже давно пора всё перевести внутри в unicode, но это еще не скоро будет
февраля 2, 2007 в 16:56
Хорошо хоть в Python 3000 обещают всё в Unicode перевести...
марта 22, 2008 в 16:31
А на кой вас CP1251 ?
системная локаль? вендузятнег?
Я сто лет как избавился от всех кодировок проме 1251
и проблем не чую
мая 1, 2009 в 12:02
У вас опечатка: cp-1251 надо исправить на utf-8.
Ведет себя отлично. Несколько лет пишу любые тексты (почта, IM, код, HTML) только в этой кодировке. Никаких проблем нигде не было.