Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
Ok, vou fazer um teste e posto aqui o resultado!
Obrigada, por enquanto!
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');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'])?
>
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.
Wictor, não funcionou... agora até os acentos estão com ? ....
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');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...
Deixa eu lhe fazer uma pergunta, o "?" vai para o Banco de dados, ou apenas retorna no PHP?
vai para o banco...
qdo pego do banco para exibir, também.... aí eu uso o utf8_decode(), mas mesmo assim aparece ?
O único jeito que vejo é esse http://php.net/manual/en/function.stripslashes.php
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);
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']);