Я бродил по этим форумам, задавая вопросы о проблемах, связанных с кодированием / декодированием Python и UTF-8.
На этот раз я наткнулся на что-то, что поначалу казалось легкой проблемой.
В моем предыдущем вопросе (http://stackoverflow.com/questions/7138797/problems-with-python-in-google-app-engine-utf-8-and-ascii) я спросил, как обеспечить правильное добавление строк UTF-8 к переменным:
Messages.append(ChatMessage(chatter, msg))
Решение было что-то вроде этого:
Messages.append(ChatMessage(chatter.encode( "utf-8" ), msg.encode( "utf-8" )))
Довольно просто.
Однако теперь я столкнулся с проблемой отправки данных в хранилище данных Google App Engine. Код из книги, которую я использовал (Код в облаке), выглядел следующим образом (япропустил лишние части):
#START: ChatMessage
class ChatMessage(db.Model):
user = db.StringProperty(required=True)
timestamp = db.DateTimeProperty(auto_now_add=True)
message = db.TextProperty(required=True)
def __str__(self):
return "%s (%s): %s" % (self.user, self.timestamp, self.message)
#END: ChatMessage
# START: PostHandler
class ChatRoomPoster(webapp.RequestHandler):
def post(self):
chatter = self.request.get("name")
msgtext = self.request.get("message")
msg = ChatMessage(user=chatter, message=msgtext)
msg.put() #<callout id="co.put"/>
self.redirect('/')
# END: PostHandler
Я думал, что замена части PostHandler следующим битом:
msg = ChatMessage(user=chatter.encode( "utf-8" ), message=msgtext.encode( "utf-8" ))
... сделает свое дело. К сожалению, это сделалне получилось. Я все еще продолжаю получать
File "/base/data/home/apps/s~markcc-chatroom-one-pl/1.353054484690143927/pchat.py", line 147, in post
msg = ChatMessage(user=chatter.encode( "utf-8" ), message=msgtext.encode( "utf-8" ))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 0: ordinal not in range(128)
Естественно, я объявил (# - - кодирование: utf-8 - -) и поставил:
self.response.headers['Content-Type'] = 'text/html; charset=UTF-8'
в файле. Это не делает ничего, чтобы облегчить проблему.
Как видите, я не очень хорошо разбираюсь в Python, и проблемы с кодированием / декодированием для меня немного новы.Буду признателен за вашу помощь.Если кто-нибудь может объяснить мне, где я ошибся в этом случае и какие методы использовать, чтобы избежать подобных затруднений в будущем?Заранее спасибо.