Назад | Перейти на главную страницу

Повторная загрузка файла с именем файла в формате Unicode создает идентичный дубликат

Я запускаю сайт Django в системе Debian 6 с сервером Gunicorn и nginx 0.7.67, обрабатывающим статические файлы. Локаль файловой системы установлена ​​на sv_SE.UTF-8.

У меня возникла проблема, когда другой пользователь загрузил файл с именем, содержащим символы Юникода. Это заставило сервер выдать ошибку 404 при попытке обслуживания загруженного файла. Когда я загрузил тот же файл из своей системы, сайт теперь обслуживает файл правильно. Однако он не удалил старый файл, хотя во всех отношениях они кажутся одним и тем же файлом. Ниже приведен текущий список каталогов.

-rwxr-xr-x 1 www-data www-data 1188260 25 jan 22.53 Läxa 15_geometri.pdf
-rwxr-xr-x 1 www-data www-data 1188260 27 jan 10.45 Läxa 15_geometri.pdf

Как теперь могут быть два одинаковых файла с одинаковым (кажущимся) именем? Что могло быть причиной ошибки 404, т.е. что случилось с первой загрузкой? URL такой же, как и раньше, только теперь он не выдает 404.

Визуально одна и та же строка юникода может отличаться из-за нормализации юникода. Вы можете проверить, разные ли имена, попробовав сделать ls > a.txt и анализ файла как двоичных данных, побайтно.

PS. я надеюсь ls не выполняет никакой нормализации юникода и доставляет имена файлов «как есть» ...

У них разные кодировки для имени файла. Каков результат, когда вы делаете в каталоге:

$ file -i *