Python/Django编码问题
我有一个让我发疯的问题 我想建立一个django日历应用程序。我创建了一个网站,在那里我可以上传ics文件,为日历提供事件。重点应该是处理上传的方法。在这里,我保存上传的文件,并希望使用iCalendar(python模块)解析其内容。阅读内容后,我想将ics文件中的事件转换为我可以保存在数据库中的事件。当我想保存模块e.save()时发生错误。。。德国umlauteöääß等存在问题。。。 正如你所看到的,我已经尝试用utf-8对摘要进行编码,但仍然遇到问题。。。还有想法 谢谢 我的表格:Python/Django编码问题,python,django,ascii,encode,utf,Python,Django,Ascii,Encode,Utf,我有一个让我发疯的问题 我想建立一个django日历应用程序。我创建了一个网站,在那里我可以上传ics文件,为日历提供事件。重点应该是处理上传的方法。在这里,我保存上传的文件,并希望使用iCalendar(python模块)解析其内容。阅读内容后,我想将ics文件中的事件转换为我可以保存在数据库中的事件。当我想保存模块e.save()时发生错误。。。德国umlauteöääß等存在问题。。。 正如你所看到的,我已经尝试用utf-8对摘要进行编码,但仍然遇到问题。。。还有想法 谢谢 我的表格: c
class UploadFileForm(forms.Form):
file = forms.FileField()
我的模型
class Event(models.Model):
title = models.CharField(max_length=255)
start = models.DateTimeField()
end = models.DateTimeField()
url = models.CharField(max_length=255)
我的看法
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
handle_upload(request)
return HttpResponseRedirect(reverse("app:site"))
else:
form = UploadFileForm()
return TemplateResponse(
request,
'app/site.html',
{'form' : form},
)
我处理上传的方法
fname = request.FILES['file'].name
f = request.FILES['file']
with open('app/media/import/%s' % fname, 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
g = open('app/media/import/%s' % fname, 'rb')
cal = Calendar.from_ical(g.read())
for event in cal.walk('vevent'):
title = str(event.get('summary')).encode('utf-8')
start = format_date(event.get('dtstart').to_ical())
end = format_date(event.get('dtend').to_ical())
e = Event(title=title, start=start, end=end)
e.save()
错误
Environment:
Request Method: POST
Request URL: domain:8000/site/source/
Django Version: 1.6.7
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myApp')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
112. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/user/mySite/myApp/views.py" in source
24. handle_upload(request)
File "/home/user/mySite/myApp/utils.py" in handle_upload
20. title = str(event.get('summary')).encode('utf-8')
Exception Type: UnicodeEncodeError at /calendar/source/
Exception Value: 'ascii' codec can't encode character u'\xdf' in position 3: ordinal not in range(128)
您不应该使用str(),因为它是ascii错误的来源。
只需使用编码。或者使用unicode而不是str–Vajk Hermecz
错误发生在哪里?显示完整的回溯。不应使用str(),因为它是ascii错误的来源。只需使用编码。或者使用unicode而不是strVajk。。。谢谢你的帮助。。。现在,如果你把你的答案作为一个答案而不是评论,我可以给你打分,谢谢