Nomes de arquivos UTF8 em PHP e diferentes codificações Unicode
Eu tenho um arquivo contendo caracteres Unicode em um servidor rodando linux. Se eu SSH no servidor e uso tab-completion para navegar para o arquivo / pasta contendo caracteres unicode não tenho nenhum problema para acessar o arquivo / pasta. O problema surge quando tento acessar o arquivo via PHP (a função que eu estava acessando o sistema de arquivos erastat
). Se eu enviar o caminho gerado pelo script PHP para o navegador e colá-lo no terminal, o arquivo também parece existir (mesmo olhando para o terminal, os caminhos dos arquivos são exatamente os mesmos).
Eu configurei o PHP para usar o UTF8 como sua codificação padrão via php_ini bem comomb_internal_encoding
. Eu verifiquei a codificação da cadeia de caracteres PHP e ela sai como UTF8, como deveria. Revirando um pouco mais eu decidihexdump
o caractere é que a conclusão da guia do terminal e compará-lo com ohexdump
do caractere 'regular' é criado pelo script PHP ou inserindo manualmente o caractere via teclado (opção + e + e no os x). Aqui está o resultado:
echo -n é | hexdump 0000000 cc65 0081 0000003 echo -n é | hexdump 0000000 a9c3 0000002
O caractere é que permite uma referência de arquivo correta no terminal é o de 3 bytes. Não tenho certeza para onde ir a partir daqui, qual codificação devo usar no PHP? Devo estar convertendo o caminho para outra codificação viaiconv
oumb_convert_encoding
?