MySQL - Como fazê-lo aceitar caracteres especiais?

9,569 views
Skip to first unread message

GDaldegan

unread,
May 21, 2007, 2:31:57 PM5/21/07
to PHP MG
Olá pessoal, estou com um probleminha. Fiz um sisteminha que faz um
cadastro de notícias. Só que o MySQL não está aceitando caracteres
como acentuação e "ç". Eu verifiquei no google e encontrei bastante
soluções, mas nenhuma delas resolveu meu problema. Pelo que vi, o
problema está relacionado ao "Collation". Eu utilizo o
"latin1_general_ci". (indicado pela LocaWeb http://site.locaweb.com.br/suporte/faq/faq.asp?faq=333
). Mas não mudou nada. Qual vocês utilizam?
Obrigado a todos

Michael Mafort

unread,
May 21, 2007, 4:10:53 PM5/21/07
to ph...@googlegroups.com
Tente usar o ISO-8859-1

Em 21/05/07, GDaldegan <gdal...@gmail.com> escreveu:

GDaldegan

unread,
May 22, 2007, 11:59:55 AM5/22/07
to PHP MG
ué, no phpmyadmin não tem o ISO-8859-1
tem algum outro que possa fazer isso?

On 21 maio, 17:10, "Michael Mafort" <michaelmaf...@gmail.com> wrote:
> Tente usar o ISO-8859-1
>

> Em 21/05/07, GDaldegan <gdalde...@gmail.com> escreveu:

Michael Mafort

unread,
May 22, 2007, 12:53:07 PM5/22/07
to ph...@googlegroups.com
UTF-8

Em 22/05/07, GDaldegan <gdal...@gmail.com> escreveu:

GDaldegan

unread,
May 22, 2007, 4:54:39 PM5/22/07
to PHP MG
o problema está muito estranho. Vejam só, se eu fizer a inclusão do
registro via phpmyadm, o meu bando de dados recebe os caracteres
especiais normalmente.. ç ~ ^... exibe tudo correto. Agora, se eu
fizer a inclusão via formulario, tudo entra no banco de dados
errado... os caracteres especiais ficam errados. Como posso resolver
isso? realmente é no formulario?

On 22 maio, 13:53, "Michael Mafort" <michaelmaf...@gmail.com> wrote:
> UTF-8
>
> Em 22/05/07, GDaldegan <gdalde...@gmail.com> escreveu:

Michael Mafort

unread,
May 22, 2007, 5:02:13 PM5/22/07
to ph...@googlegroups.com
Se esta acontecendo como vc esta falando vc pode tentar dando um utf8_encode($string); que odifica uma string ISO-8859-1 para UTF-8.
 
 
se o encode nao der tente o utf8_decode();
 
nao me lembro bem qual é mas eh uma das duas, rs.
 
Em 22/05/07, GDaldegan <gdal...@gmail.com> escreveu:

Charles Schaefer

unread,
May 22, 2007, 6:05:49 PM5/22/07
to ph...@googlegroups.com
bom,

eu tinha muitos problemas com isso também. O que eu fiz para resolver foi fazer tudo o que faço em uma única codificação.
Assim, se meu sistema usa banco de dados, eu escrevo em utf-8 o script php, o html, o javascript, o arquivo sql e mudo a codificação do banco de dados para utf-8 também.

No seu caso pode resolver se você salvar todos os seus arquivos em iso-8859-1, já que é essa a codificação que você usa no banco.

Para saber a codificação de saída dos seus scripts vá no firefox exibir -> codificação  e veja qual codificação está marcada.
O firefox costuma usar a codificação de saída do arquivo ao invés daquele declarada no html com charset.

bom, espero ter ajudado.

Até logo mais
--
Charles Schaefer - Web Developer
Email: charles...@gmail.com
Tels.: +55 31 9317-2862, 8643-2916

ATENÇÃO: Não imprima este e-mail. A natureza agradece. E seu bolso também.
WARNING: Don't print this e-mail. The nature is thankful. And your money also.

GDaldegan

unread,
May 23, 2007, 11:41:33 AM5/23/07
to PHP MG
desculpe minha ignorância de iniciante, mas como eu posso salvar os
dados em iso-8859-1?

se ajudar, eu vou postar meu script:

<?php require("conexao.php"); ?>

<?php
$tipo = $_POST[tipo];
$data = $_POST[data];
$titulo = $_POST[titulo];
$noticia = $_POST[noticia];
$imagem = $_POST[imagem];
$legenda_imagem = $_POST[legenda_imagem];
$autor = $_POST[autor];
$postado = $_POST[postado];

$sql = "INSERT INTO noticias (tipo, data, titulo, noticia, imagem,
legenda_imagem, autor, postado) VALUES ('$tipo', '$data', '$titulo',
'$noticia', '$imagem', '$legenda_imagem', '$autor', '$postado')";

//Inserindo os dados
$sql = mysql_query($sql)
or die ("Houve erro na gravação dos dados, por favor, clique em voltar
e verifique os campos obrigatórios!");

echo "<h1>Cadastro efetuado com sucesso!</h1>";
echo "<a href='administracao.php' target='_self'><p>Voltar</p></a>";

?>

... essa minha duvida está durando hein? rsrsrsrs.... obrigado a todos
que estão tentando me ajudar.

On 22 maio, 19:05, "Charles Schaefer" <charlesschae...@gmail.com>
wrote:


> bom,
>
> eu tinha muitos problemas com isso também. O que eu fiz para resolver foi
> fazer tudo o que faço em uma única codificação.
> Assim, se meu sistema usa banco de dados, eu escrevo em utf-8 o script php,
> o html, o javascript, o arquivo sql e mudo a codificação do banco de dados
> para utf-8 também.
>
> No seu caso pode resolver se você salvar todos os seus arquivos em
> iso-8859-1, já que é essa a codificação que você usa no banco.
>
> Para saber a codificação de saída dos seus scripts vá no firefox exibir ->
> codificação e veja qual codificação está marcada.
> O firefox costuma usar a codificação de saída do arquivo ao invés daquele
> declarada no html com charset.
>
> bom, espero ter ajudado.
>
> Até logo mais
>

> On 5/22/07, Michael Mafort <michaelmaf...@gmail.com> wrote:
>
>
>
>
>
> > Se esta acontecendo como vc esta falando vc pode tentar dando um
> > utf8_encode($string); que odifica uma string ISO-8859-1 para UTF-8.
>
> > se o encode nao der tente o utf8_decode();
>
> > nao me lembro bem qual é mas eh uma das duas, rs.
>

> > Em 22/05/07, GDaldegan <gdalde...@gmail.com> escreveu:

> Email: charlesschae...@gmail.com

Charles Schaefer

unread,
May 23, 2007, 11:54:14 AM5/23/07
to ph...@googlegroups.com
Dependendo do editor que você utiliza ele te dá a opção de codificação que você quer usar para salvar seus arquivos.
Geralmente isso só aparece no "Save as" (Salvar como). Algumas IDEs, como o PHPEclipse, te dão a opção de escolher a codificação que quer utilizar no projeto, salvando assim todos os arquivos numa mesma codificação.
Email: charles...@gmail.com

Michael Mafort

unread,
May 23, 2007, 1:05:02 PM5/23/07
to ph...@googlegroups.com
Faz assim:
Exemplo:
 
Passando a variavel para ISO:
$postado = utf8_decode( $_POST[postado] );
 
passando a varialvel para UTF-8
$postado = utf8_encode( $_POST[postado] );


 
Em 23/05/07, GDaldegan <gdal...@gmail.com> escreveu:

Charles Schaefer

unread,
May 23, 2007, 1:32:50 PM5/23/07
to ph...@googlegroups.com
e assim funcionou?
Email: charles...@gmail.com

GDaldegan

unread,
May 23, 2007, 3:23:41 PM5/23/07
to PHP MG
Opa!!!!... era isso mesmo pessoal! muito obrigado pela dica!
Acabei utilizando a dica do Michael.

ps:Charles, eu não uso IDE

Valew pessoal!!!

On 23 maio, 14:32, "Charles Schaefer" <charlesschae...@gmail.com>
wrote:
> e assim funcionou?


>
> On 5/23/07, Michael Mafort <michaelmaf...@gmail.com> wrote:
>
>
>
>
>
> > Faz assim:
> > Exemplo:
>
> > Passando a variavel para ISO:
> > $postado = utf8_decode( $_POST[postado] );
>
> > passando a varialvel para UTF-8
> > $postado = utf8_encode( $_POST[postado] );
>

> > Em 23/05/07, GDaldegan <gdalde...@gmail.com> escreveu:

GDaldegan

unread,
May 23, 2007, 3:23:50 PM5/23/07
to PHP MG
Opa!!!!... era isso mesmo pessoal! muito obrigado pela dica!
Acabei utilizando a dica do Michael.

ps:Charles, eu não uso IDE

Valew pessoal!!!

On 23 maio, 14:32, "Charles Schaefer" <charlesschae...@gmail.com>
wrote:

> e assim funcionou?


>
> On 5/23/07, Michael Mafort <michaelmaf...@gmail.com> wrote:
>
>
>
>
>
> > Faz assim:
> > Exemplo:
>
> > Passando a variavel para ISO:
> > $postado = utf8_decode( $_POST[postado] );
>
> > passando a varialvel para UTF-8
> > $postado = utf8_encode( $_POST[postado] );
>

> > Em 23/05/07, GDaldegan <gdalde...@gmail.com> escreveu:

Reply all
Reply to author
Forward
0 new messages