Ir para conteúdo

POWERED BY:

Arquivado

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

Gisele.Passoni

Problemas com aspas duplas ao gravar no mysql

Recommended Posts

Bom dia a todos!

 

Tenho uma página de cadastro de notícias e está acontecendo o seguinte problema: quando copio e colo um texto do word para o textarea e mando gravar, onde tem aspas duplas aparece o ponto de interrogação.

As páginas estão codificadas em charset=iso-8859-1. A tabela está como latin1_swedish_ci.

Para gravar uso utf8_encode ($_POST['texto']) e para exibir uso utf8_decode(). Todos os acentos, ç, são gravados e exibidos normalmente... o problema é que as aspas duplas (que possui uma curvinha) é gravada como interrogação... o que fazer? Aguardo resposta! Obrigada!

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso, as aspas duplas do Word não são suportadas no SGBD. Como eu nunca tive esse problema, eu imagino que a melhor solução seja converter os caracteres.

 

Tente o seguinte:

$texto = iconv('ISO-8859-1', 'ASCII//TRANSLIT', $_POST['texto']);     

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode definir os charset, que vem e vai para o Banco de dados.

 

http://php.net/manual/pt_BR/mysqli.set-charset.php

 

Eu costumo usar isto:

 

mysql_query("SET NAMES 'utf8'");
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_results=utf8');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel, com essa função que vc me passou, a página não executa nada... não retorna nada.


Wictor, vou testar o que vc me passou. Só uma dúvida... em que local eu coloco esse código, junto com a conexão?

Outra coisa... mesmo fazendo isso, tenho que gravar assim: $texto=utf8_encode ($_POST['texto'])?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel, com essa função que você me passou, a página não executa nada... não retorna nada.

Wictor, vou testar o que você me passou. Só uma dúvida... em que local eu coloco esse código, junto com a conexão?

Outra coisa... mesmo fazendo isso, tenho que gravar assim: $texto=utf8_encode ($_POST['texto'])?

 

Sim após a conexão.

Não não precisa, é só colocar o código e o charset vai ser definido em todos mysql_query, ou seja, na hora que você for mandar o $texto para o banco de dados, ele vai transformar em utf8.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esqueci de dizer, como você está usando iso modificar a utf8 pela iso. ^^

 

mysql_query("SET NAMES 'ISO-8859-1'");
mysql_query('SET character_set_connection=ISO-8859-1');
mysql_query('SET character_set_client=ISO-8859-1');
mysql_query('SET character_set_results=ISO-8859-1');

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah tá! Vou testar novamente!


Wictor, voltou como antes... ? no lugar das aspas duplas


isso só acontece quando copio e colo texto do word... se eu digitar as aspas direto no textarea, não acontece...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, vou dar uma pesquisada sobre essa função e testar. Caso dê certo, eu posto aqui!

Obrigada pela atenção!


Wictor, não resolveu... continua do mesmo jeito.

Mesmo assim, obrigada! A solução que tenho é alterar "na mão" essas aspas vindas do word ( ) pela " normal


Encontrei a solução!! Usei a função str_replace, para substituir a “ por "
Segue código abaixo:

$texto=str_replace('“', '"',$_POST['texto']);
$texto=str_replace('”', '"',$texto);

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.