Eles possuem diferentes codificações para o nome do arquivo. Qual é a saída quando você faz no diretório:
$ file -i *
Estou executando um site do Django em um sistema Debian 6, com um servidor gunicorn e o nginx 0.7.67 gerenciando arquivos estáticos. A localidade do sistema de arquivos é configurada como sv_SE.UTF-8.
Ocorreu um problema em que outro usuário fez o upload de um arquivo com um nome de arquivo contendo caracteres unicode. Isso fez com que o servidor lançasse um erro 404 ao tentar enviar o arquivo carregado. Quando eu carreguei o mesmo arquivo do meu sistema, o site agora serve o arquivo corretamente. No entanto, ele não excluiu o arquivo antigo, embora pareça ser exatamente o mesmo arquivo em todos os aspectos. Abaixo está a lista atual de diretórios.
-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
Como pode haver agora dois arquivos idênticos com o mesmo nome (aparente)? O que pode ter sido a causa do 404 em primeiro lugar, ou seja, o que há de errado com o primeiro upload? O URL é o mesmo de antes, só que agora ele não lança um 404.
Eles possuem diferentes codificações para o nome do arquivo. Qual é a saída quando você faz no diretório:
$ file -i *
Visualmente, a mesma cadeia unicode pode ser diferente devido à normalização unicode. Você pode verificar se os nomes são diferentes, tentando fazer ls > a.txt
e analisando o arquivo como dados binários, byte por byte.
PS. Espero que ls
não realize nenhuma normalização unicode e forneça nomes de arquivos "como estão" ...