PHP: Lendo arquivos com caracteres especiais no nome

Ah as tabelas de caracteres, essa dor de cabeça nos dias de hoje que nos remete a um tempo em que não existe padronização e nem capacidade computacional (época dos processadores 8bits) para algo como UTF8.

Veremos então uma maneira simples de contornar o problema que essa aberração tecnológica nos causa na hora de ler  um arquivo com caracteres especiais no nome utilizando o PHP.

Simples e rápido

1
2
3
4
5
6
7
8
9
10
11
12
<!--?php // Definimos o caminho
$caminho = "/var/www/html/qualquercoisa/arquivo_nome_ççç.pdf";

// O PHP tornará o caminho do arquivo nulo caso tenha algum problema com a codificação do memsmo. Sendo assim vamos checar se a conversão é necessária.

if($caminho == false){
// Casso seja necessário executamos a conversão utilizando essa função maravilhosa
$caminho = iconv(mb_detect_encoding($caminho, "auto"), 'Windows-1252', $caminho);
}
// Depois lemos o conteúdo do arquivo
$conteudoArquivo = readfile($caminho, true);
?-->

Simples, fácil e rápido. A mesma função pode ser utilizada para muitos casos onde é necessário uma conversão mais inteligente, já que esse método trata inclusive aspas e afins.