Найти - Пользователи
Полная версия: Запись файла из джанго. decoding Unicode is not supported
Начало » Python для новичков » Запись файла из джанго. decoding Unicode is not supported
1
pal201
Пытаюсь записать файл таким образом :
 	
command='Channel: 1: %s \nMaxRetries: 0 \nRetryTime: 60 \nWaitTime: 30 \nSet: text=%s \nContext: 2 \nExtension: 2 \nPriority: 1 \n'%(number,message)
path='/var/spool/asterisk/for_copy/'

if os.path.exists(path):
f=open(path+'dial.call','w')
f.write(str(command))
f.close()
Получаю такую ошибку:
'ascii' codec can't encode characters in position 105-111: ordinal not in range(128)
Как правильно записать такой текст в файл?
Спасибо.
chet
Попробуйте в начале кода вставить:
# -*- coding: cp1251 -*-
beelze
ошибка при str(command) возникает? можно и без str() записывать, если isinstance(command, types.StringTypes). можно таки unicode(str) делать как вариант
pal201
beelze
ошибка при str(command) возникает? можно и без str() записывать, если isinstance(command, types.StringTypes). можно таки unicode(str) делать как вариант
Дело в том, что встречаются кириллические символы в command. Как их привести к общему типу и записать например в кодировке utf-8?
beelze
Вопрос о5 же в кодировке этих самых кириллических символов
pal201
beelze
Вопрос о5 же в кодировке этих самых кириллических символов
Все написано в utf-8. В каждом файле стоит coding utf-8 и из формы django приходит все в utf-8
beelze
возможно, Вам стоит поглядеть модуль codecs — Codec registry and base classes
o7412369815963
> из формы django приходит все в utf-8
раз ошибка возникает, то скорее из формы приходит unicode

Попробуйте так:
open(path+'dial.call','w').write(command.encode('utf8'))

см. тут про кодировки
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB