0
나를 미치게하는 문제가 있습니다 ...Python/Django 인코딩 문제
나는 장고 달력 응용 프로그램을 만들고 싶습니다. 이벤트로 캘린더에 피드를 업로드 할 수있는 사이트를 만들었습니다. 포커스는 업로드를 처리하는 방법이어야합니다. 여기에 업로드 된 파일을 저장하고 iCalendar (파이썬 모듈)로 내용을 파싱하고 싶습니다. 내용을 읽은 후 ics 파일의 이벤트를 데이터베이스에 저장할 수있는 이벤트로 변환하려고합니다. 오류는 모듈 e.save()를 저장하려고 할 때 발생합니다 ... 독일어 umlaute ö ä Ü ß 등의 문제가 있습니다 ... 여러분도 알다시피 나는 이미 utf-8로 요약을 인코딩하려고 시도했지만 문제와 ... 그리고 아이디어를 만난다?
감사
내 양식 :
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 오류가 발생한 곳에서 사용하면 안됩니다. encode를 사용하기 만하면됩니다. 아니면 str 대신 유니 코드를 사용하십시오 –
Vajk ... 도와 줘서 고마워요 ... 이제 답을 답으로 게시하고 덧글이 아니라면 제가 평가할 수 있습니다. 감사합니다. – Rooterle