Ir para conteúdo
Fórum Script Brasil
  • 0

PHP não envia acentos ao banco Mysql


Thiago Afonso Penna

Pergunta

Boa tarde, pessoal!

Instalei o sistema de Help-Desk (abertura de chamados) OCOMON 2.0-RC6 e estou tendo o seguinte problema:

O PHP busca as palavras acentuadas do banco e as exibe normalmente, isso prova que o banco aceita acentos e 'ç' e o PHP os exibe. Sem problemas.

A questão é que só consigo inserir palavras acentuadas ou com 'ç' no banco pelo phpmyadmin ou mysql (cli). Pelo sistema OCOMON direto eu não consigo.

Está ocorrendo algum problema no envio dos dados contidos nos campos, isto é, quando o PHP envia para o banco.

Se eu digitar em descrição: "Usuário entrou em contato informando que sua impressora parou de imprimir.", nenhum dado será inserido no banco no campo 'descricao' devido ao acento da palavra 'usuário'.

Já tentei de tudo (mudar o collation - utf-8, latin1, iso-8859-1)... tá osso... ajudem please.

MySQL 5.5.28 + PHP 5.4.3

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Verifique o collation que você está usando no bd. O bd aceita acentuacao, mas depende do collation...

Eu uso 'latin1_swedish_ci'

se você estiver usando o phpmyadmin, faca o seguinte para alterar o collation:

va para a database a ser modificada => operacoes => Collation: latin1_swedish_ci(bem embaixo da página) => executar

se você quiser fazer isso atraves do proprio mysql, escreva o seguinte codigo:

ALTER DATABASE `nome_database` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;

Espero que ajude...

qualquer duvida posta ai

Link para o comentário
Compartilhar em outros sites

  • 0
Verifique o collation que você está usando no bd. O bd aceita acentuacao, mas depende do collation...

Eu uso 'latin1_swedish_ci'

se você estiver usando o phpmyadmin, faca o seguinte para alterar o collation:

va para a database a ser modificada => operacoes => Collation: latin1_swedish_ci(bem embaixo da página) => executar

se você quiser fazer isso atraves do proprio mysql, escreva o seguinte codigo:

ALTER DATABASE `nome_database` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;

Espero que ajude...

qualquer duvida posta ai

OK!, neste momento é exatamente este collation que estou usando (latin1_swedish_ci). Já identifiquei que o bd aceita sim o acento, e quando insiro no bd pelo phpmyadmin, o sistema até busca o campo e exibe normalmente. Eu não estou conseguindo inserir palavras/frases acentuadas pelo campo do sistema. Esse é o problema.

Obrigado pela atenção.

Link para o comentário
Compartilhar em outros sites

  • 0
OK!, neste momento é exatamente este collation que estou usando (latin1_swedish_ci). Já identifiquei que o bd aceita sim o acento, e quando insiro no bd pelo phpmyadmin, o sistema até busca o campo e exibe normalmente. Eu não estou conseguindo inserir palavras/frases acentuadas pelo campo do sistema. Esse é o problema.

Obrigado pela atenção.

Qual o charset que voce esta usando na pagina?

Link para o comentário
Compartilhar em outros sites

  • 0

Fala home...

eu estava com o mesmo problema, porque o painel admin do php, cpanel, não estava aceitando acentuação e assim pelo ftp direto eu consegui up sem erros.

Veja quando for salvar seu script embaixo ao colocar o nome, veja em converter, não salve como unicode ou UTF-8, porque eles não reconhecem acentuação. deixe default mesmo.

Eu tentei por várias vezes, pedi ajuda ao provedor central, porque achava que o erro poderia estar neles, mas não era, era na hora de salvar.

Quando deixei em default tudo se resolveu, porque ele reconhece como verdadeiro.

Bom, espero ter ajudado...

abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

ou pode-se mudar a codificação da página para ISO-8859-1 e quando resgatar os campos de textos pode usar o comando utf8_encode();

na hora de printar na tela, é só usar o comando utf8_decode();

sempre fiz assim e nunca deu problema.. eu particularmente acho melhor do que ficar mexendo no char set do banco de dados que pode dar algum problema pior ainda.

Link para o comentário
Compartilhar em outros sites

  • 0

Cara uma coisa que me ajuda bastante e passar alguns parametros a mais na hora de fazer a conexão com o banco de dados

header('Content-Type: text/html; charset=utf-8');
mysql_connect('127.0.0.1', 'user', 'senha') or die(mysql_error());
mysql_select_db('banco') or die(mysql_error());

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');

Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade tanto o ISO-8859-1 e o UTF8 aceitam acentos.

A codificação ISO-8859-1 aceita todos os caracteres latinos, inclusive os acentuados.

A codificação UTF8 aceita uma porrada de caracteres gregos, russos, se não me engano chinês simplificado também, inclusive todos os caracteres latinos acentuados ou não.

O que acontece é que para que a acentuação apareça corretamente todos os pontos por onde os dados passam devem estar em uma única codificação.

Esses pontos são:

Banco de dados,

Apache,

Arquivo que irá ler os dados,

Meta dado charset enviado ao navegador

Eu uso só ISO-8859-1, mas se você quiser usar UTF8 também dará certo desde que TODOS os pontos estejam na mesma codificação.

O Banco pode ser visto pelo phpMyAdmin ou pelo comando (se o seu usuário tiver acesso ao banco information_schema):

SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'nome_do_bd' AND TABLE_NAME = 'nome_da_tabela';

No Apache eu utilizo um código no arquivo htaccess(Só funciona se as configurações do apache permitirem o htaccess para a sua hospedagem):

AddDefaultCharset ISO-8859-1

Para que o htaccess seja permitido a opção "AllowOverride", que no apache2, no linux, está no arquivo /etc/apache2/sites-available/default, tem que estar com o valor "All"
A forma de ver e mudar o Arquivo que irá ler os dados vai dependender de programa para programa.
E por fim:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite a todos!

Estou com o mesmo problema há alguna dias e ainda não consegui resolver, já verifiquei o arquivo "charset" do apache, o php.ini da pasta php5, tentei colocar a decodificacao direto na pagina que faz a conexao com o banco e sem sucesso!

Mas reparei que no meu caso, estou usando o debian 7 + php5 + mysql 5.5, quando eu conecto no banco de dados e rodo o comando "status" o charset do servidor e diferente do cliente, pode isso?

Se alguém conseguiu resolver e puder ajudar agradeceria muito!

Abraços!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...