Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BJ_

:: Acentuação no link ::

Recommended Posts

Estou com problemas com acentuação e cedilha, mas somente quando busco um dado do BD e o utilizo como link.

Se dou um echo nesse dado com acento/cedilha ele aparece normalmente, mas se o utilizo como link <a href='$dado'> ao passar o mouse sobre o link ele está correto, mas clicando sobre ele mostra outros caracteres.

Retorna algo assim: BarcaXChelsea--16h%C3%A1sssda.txt

O certo e assim está no BD: BarcaXChelsea--16hásssda.txt

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é a encodificação da url, ele naum vai passar com o acento propriamente dito na url, mas sim ele encodificado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é a encodificação da url, ele naum vai passar com o acento propriamente dito na url, mas sim ele encodificado.

Realmente é isso que acontece.A unica solução seria remover os acentos antes de enviar para o BD?Não queria fazer isso pois no caso é um arquivo que está sendo enviado. Terei que renomear o arquivo antes de enviar para o servidor e pegar esse novo nome. Ou o mais "porco", proibir o usuário de enviar arquivos acentuados.Não há uma função que possa corrigir isso?Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existem as funções do php urldecode() e urlencode(), que trabalham com a codificação da url:

http://www.php.net/manual/pt_BR/function.urldecode.php

http://www.php.net/manual/pt_BR/function.urlencode.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim mas essas funções não resolvem o problema pois o arquivo está com acento no servidor, sendo assim, ele não encontra o arquivo.

Tanto encodando como decodificando não funciona.

Quando decodifico (decode) não ocorre nada pois o link já está mostrado corretamente, o estranho é que quando codifico ele coloco os caracteres no lugar do acento porém quando clico nele ele me retorna erro.

Encode:

BarcaXChelsea--16h%E1sssda.txt
Decode:
BarcaXChelsea--16h%C3%A1sssda.txt
Aqui o link fica com acento, como antes, mas ao clicar ele retorna isso.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

não devia estar acontecendo isso, mas, ja que está, use uma função que remova os caracteres especiais dos arquivos antes de fazer o upload, da uma pesquisada no forum que ja vi algo assim por aki http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tb não entendo pq está acontecendo isso.

Bom tenho aqui uma função vou posta-la caso alguém precise.

Valeu a força!

Abraços!

1: <?php 2:  3: // Função para tirar os acentos de uma string! pode ser adaptadas para outras coisas 4:  5: function RemoveAcentos($Msg) 6: { 7:   $a = array( 8:			 '/[ÂÀÁÄÃ]/'=>'A', 9:			 '/[âãàáä]/'=>'a',10:			 '/[ÊÈÉË]/'=>'E',11:			 '/[êèéë]/'=>'e',12:			 '/[ÎÍÌÏ]/'=>'I',13:			 '/[îíìï]/'=>'i',14:			 '/[ÔÕÒÓÖ]/'=>'O',15:			 '/[ôõòóö]/'=>'o',16:			 '/[ÛÙÚÜ]/'=>'U',17:			 '/[ûúùü]/'=>'u',18:			 '/ç/'=>'c',19:			 '/Ç/'=> 'C');20:	 // Tira o acento pela chave do array						21:	 return preg_replace(array_keys($a), array_values($a), $Msg);22: }23: 24: // como usar25: echo RemoveAcentos("Amanhã não irei caçar")26: ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.