Существуют приблизительно интересная работа сделанный при получении хорошей установки экрана гну, происходящей по умолчанию в следующей версии Сервера Ubuntu, который включает использование нижней части экрана для показа всех окон, а также другие полезные детали машины (как # обновляет доступный и нужна ли машине перезагрузка). Можно, вероятно, захватить их .screenrc
и настроить его к потребностям.
самые полезные команды я имею в моем .screenrc
, следующий
shelltitle "$ |bash" # make screen assign window titles automatically
hardstatus alwayslastline "%w" # show all window titles at bottom line of term
Этот способ, которым я всегда знаю, какие окна открыты, и что работает в них в данный момент, также.
В Django есть несколько утилит , которые обрабатывают это (smart_unicode, force_unicode, smart_str). Обычно вам нужен просто smart_unicode.
from django.utils.encoding import smart_unicode
def view(request):
body = u""
for filename, f in request.FILES.items():
body = body + 'Filename: ' + filename + '\n' + smart_unicode(f.read()) + '\n'
вы добавляете f.read () непосредственно в строку unicode, не декодируя ее, если данные, которые вы читаете из файла, имеют кодировку utf-8, используйте utf-8, иначе используйте любую кодировку. находится в.
сначала декодирую его, а затем добавляю в тело , например,
data = f.read().decode("utf-8")
body = body + 'Filename: ' + filename + '\n' + data + '\n'
Ответ Анурага правильный. Однако еще одна проблема заключается в том, что вы не можете точно знать кодировку файлов, загружаемых пользователями. Может быть полезно перебрать кортеж из наиболее распространенных, пока вы не получите правильный:
encodings = ('windows-xxx', 'iso-yyy', 'utf-8',)
for e in encodings:
try:
data = f.read().decode(e)
break
except UnicodeDecodeError:
pass
Если вы не контролируете кодировку файлов для файлов, которые могут быть загружены, вы можете догадаться, в какой кодировке находится файл, используя модуль Универсальный детектор кодирования ] chardet
.