UnicodeError при попытке отправить файл с греческим именем файла

1

Я создал и заполнил греческие имена в наборе(), и затем передаю этот набор значений функции просмотра.

Когда я пытаюсь напечатать этот набор, греческие имена отображаются как смешные. Я считаю, что это имеет некоторое значение, чтобы сделать это Apache mod_wsgi или Bottle doens't начать с поддержки utf-8.

Как я могу сказать Apache/Bottle, чтобы использовать LANG = el_GR.utf-8, чтобы я мог правильно отображать Юникод, потому что считаю, что здесь дело?

Я искал AdddefaultCharset utf-8 в httpd.conf, но он уже включен, поэтому я должен спросить, почему греческие символы появляются как смешные?

Это когда я пытаюсь загрузить файл с греческим именем файла.

Error: 500 Internal Server Error
Sorry, the requested URL 'http://superhost.gr/downloads/file' caused an error:

Internal Server Error
Exception:
UnicodeEncodeError('ascii', '/static/files/Î\x92ιογÏ\x81αÏ\x86ικÏ\x8c - Î\x9dίκοÏ\x82.docx', 14, 34, 'ordinal not in range(128)')
Traceback:
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/bottle.py", line 862, in _handle
    return route.call(**args)
  File "/usr/lib/python3.6/site-packages/bottle.py", line 1740, in wrapper
    rv = callback(*a, **ka)
  File "/usr/lib/python3.6/site-packages/bottle.py", line 2690, in wrapper
    return func(*a, **ka)
  File "/home/nikos/public_html/downloads.py", line 148, in file
    return static_file(filename, root='/static/files', download=True)
  File "/usr/lib/python3.6/site-packages/bottle.py", line 2471, in static_file
    if not os.path.exists(filename) or not os.path.isfile(filename):
  File "/usr/lib64/python3.6/genericpath.py", line 19, in exists
    os.stat(path)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 14-33: ordinal not in range(128)

Код для загрузки файла:

return static_file(filename, root='/static/files', download=True)

моя система - это utf-8

[root@superhost public_html]# echo $LANG
en_US.UTF-8

Возможно, что-то с Apache или это проблема с Python3?

Теги:

1 ответ

1

Вы не можете использовать Bottle static_file() с unicode filename и download=True. См. Принятый ответ на этот вопрос для двух альтернативных решений этого ограничения.

  • 0
    Итак, я должен опустить загрузку? А что насчет файлов с греческим именем файла, как я могу дать их пользователю без Bottle, возвращающему ошибку `UnicodeEncodeError ('ascii', '/ static / files / Î \ x92ιÎ. Я видел ссылку, которую вы мне дали, но не понял muhc. Как я должен написать возврат?
  • 0
    Вы можете попробовать "вернуть static_file (filename, root = '/ static / files')" с греческим именем файла, это решение сработало для автора оригинального вопроса. Или вы можете попробовать "вернуть static_file (filename, root = '/ static / files', download = '/ some / english / filename')" для отправки локального греческого файла с новым английским именем файла.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню