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

Я использую сайт Django в системе Debian 6 с сервером gunicorn и nginx 0.7.67 для обработки статических файлов. Языковой стандарт файловой системы установлен в sv_SE.UTF-8.

У меня возникла проблема, когда другой пользователь загрузил файл с именем файла, содержащим символы Unicode. Это заставило сервер выбросить 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.

2 ответа

Они имеют разные кодировки для имени файла. Что выводится, когда вы делаете в каталоге:

$ file -i *

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

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

Другие вопросы по тегам