Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite galera.
Depois de muito pesquisar na internet, resolvi recorrer ao imasters, que em todos problemas que tive obtive respostas e soluções.Espero que possam me ajudar dessa vez também.
Oque parece fácil, acabou virando uma grande dor de cabeça...
Estou usando o "Uploadify" para realizar upload de arquivos, quando se trata de imagens, uso a função md5+mt_rand e não ocorre nenhum problema à respeito de acentuações.
Porém agora não se trata de imagens. Estou enviando faixas de cd, e quando alguma faixa tem carácter especial, é substituído por outro carácter. No banco de dados fica tudo certo, com o nome original, o problema é no arquivo, o nome é alterado no arquivo. Vejam o exemplo:
Ao terminar o upload, a faixa 11 Tubarão, fica como: 11 Tubarão. E lembrando, no banco fica correto(11 Tubarão).
Seria fácil arrumar esse problema substituindo os caracteres especiais por outra coisa, mas como se trata de faixas, e essas faixas musicais serão baixadas, não é muito interessante para esse projeto.
A única coisa que consegui encontrar à respeito, e que não conseguiu me ajudar foi acrescentar as funções:
html_entity_decode(htmlentities($_FILES['Filedata']['name'], ENT_QUOTES, 'UTF-8'));
Bom, para quem quiser dar uma olhada no código, aqui está o início dele:
$diretorio = '../../../arquivos/player/'; // Caminho
$PI = addslashes(@$_REQUEST['PI']);
if (!empty($_FILES)) {
$arquivo = $_FILES['Filedata']['tmp_name'];
// Validate the file type
$fileTypes = array('mp3'); // File extensions
$fileParts = pathinfo($_FILES['Filedata']['name']);
$novo_nome = $_FILES['Filedata']['name']; // AQUI SERIA ACRESCENTADO AS FUNÇÕES ACIMA
$caminho_arquivo = $diretorio.$novo_nome;
if (in_array($fileParts['extension'],$fileTypes) && !file_exists('../../../arquivos/player/'.$novo_nome)) {
if(move_uploaded_file($arquivo,$caminho_arquivo))
{ // envia o arquivo e faz as outras verificaçõesMuito obrigado pela atenção.
>
Oi, boa noite.
Provavelmente há um conflito na codificação em algum lugar. Responda:
1) Qual a codificação da página?
2) Qual a codificação do banco de dados?
3) Qual a codificação do PHP?
Obrigado pela resposta amigo.
O charset da página onde uso o uploadify está setado como utf-8, no banco de dados igualmente(mas como comentei, no banco de dados é adicionado corretamente) e no script PHP, onde o uploadify envia a requisição, não está setado nenhuma codificação. Já tentei setar o head como utf-8, mas continuou com problema.
Bom amigo ja tentou fazer um teste para com a função utf8_encode() no caractere ã para ver o resultado ou ainda ja olhou direto em seu banco de dados para ver como esta o caractere ã???
Bom se você fizer um dos dois teste vera que o ã é o ã em UTF-8.
Uma das soluções para o seu problema seria salvar o arquivo com o nome sem acento e na hora do download e na hora do download colocar o nome com o acento assim com esta salvo no DB.
>
Bom amigo ja tentou fazer um teste para com a função utf8_encode() no caractere ã para ver o resultado ou ainda ja olhou direto em seu banco de dados para ver como esta o caractere ã???
Bom se você fizer um dos dois teste vera que o ã é o ã em UTF-8.
Uma das soluções para o seu problema seria salvar o arquivo com o nome sem acento e na hora do download e na hora do download colocar o nome com o acento assim com esta salvo no DB.
Realmente amigo, ã é ã passado para utf8. Graças a isso consegui encontrar a função que faz o contrário(utf8_decode). foi só fazer isso que agora está salvando corretamente na pasta.
problema resolvido, muito obrigado pela dica.
Resolução pra quem estiver com o mesmo problema:
$caminho_arquivo = utf8_decode($diretorio.$novo_nome);
Abraços, e obrigado por ajudarem.
Oi, boa noite.
Provavelmente há um conflito na codificação em algum lugar. Responda:
1) Qual a codificação da página?
2) Qual a codificação do banco de dados?
3) Qual a codificação do PHP?