Q: PHP não envia acentos ao banco Mysql 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 

A: O que você realmente precisa é unificar o encoding sendo usado.
Verifique no seu HTML o encoding e use o mesmo no banco. Se o encoding do site for UTF-8, coloque UTF-8 no banco.
Verifique também se a aplicação não está fazendo algum tipo de conversão antes de mandar para o banco. Algumas bibliotecas para banco fazem isso.

A: Alguns passos são necessários e vou mostrá-los aqui:
1 - Tenha certeza que toda a estrutura do seu sistema esteja sendo codificado em um único charset: Exemplo: 

2 - Para ter certeza de que tudo vai correr bem com os caracteres inseridos no banco de dados, depois do script de conexão ao banco de dados, eu insiro o seguinte código:
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');

E tomando estes cuidados, faz muito tempo que não tenho problemas com acentuação fazendo qualquer operação do CRUD no banco dos meus sites e sistemas.

A: Experimente colocar esta linha de código no cabeçalho de cada página da sua aplicação e principalmente nos ficheiros que estão a tratar os dados a ser inseridos na base de dados:
ini_set('default_charset', 'UTF-8');
Se isso não funcionar, verifique o charset encoding da sua ligação à base de dados.
Se estivar a usar MySQL:  
$link = mysql_connect('localhost', 'user', 'password');
mysql_set_charset('utf8',$link);

MySQLi:
$link = mysqli_connect("localhost","my_user","my_password","my_db");
mysqli_set_charset($link,"utf8");

PDO:
$db = new PDO(   'mysql:host='.DB_HOST.'; dbname='.DB_NAME, DB_USER, DB_PASS, 
            array(
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
                PDO::ATTR_PERSISTENT => false,
                PDO::ATTR_EMULATE_PREPARES => false,
                PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
            )
        );


A: cara pesquisei no forum do sourceforge relacionado a esse projeto e ja tinha um ticket sobre esse assunto.
olha nesse link
http://sourceforge.net/p/ocomonphp/bugs/168/#1aa1
Editado
dei uma olhada no código de conexão desse sistema, que alias é meio antigo(2005) descrito no cabeçalho do arquivo conecta.class.php(apesar do autor ter atualizado o projeto até 2009 conforme o LEIAME.txt)


*

*localize o arquivo "includes/classes/conecta.class.php" no diretório raiz da aplicação

*Agora licalize a linha de código $this->con=mysql_connect(SQL_SERVER,SQL_USER,SQL_PASSWD)or die(mysql_error());

*Abaixo da linha acima, adicione mysql_set_charset("UTF8", $this->con);
OBS: substitua UTF8 na função mysql_set_charset pelo tipo de charset que deseja trabalhar, acho que utf8 em tudo, inclusive nos seus html e banco de dados já resolve o problema com os acentos.

A: Coloque a collation do banco de dados SEMPRE como utf8_general_ci e no código PHP, quando der insert faça assim $nome = utf8_encode($_POST["nome"]);
Sempre usei assim, nunca tive problemas  ;)

A: Quer evitar problemas com acentos?
Crie/converta todos os arquivos (PHP, HTML,CSS, todos) para UTF8 sem BOM.
No html coloque o charset em utf8, no php usando header content-type como utf8 e no banco especifique ao momento da conexão charset utf8 pelo PDO ou mysqli_set_charset.
Você nunca mais vai ouvir falar sobre problema com charset, alias isso é um problema?

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

Isso funcionou para mim. No entanto meu site está todo codificado em UTF-8 e a collation geral do banco de dados também.
Coloque este código sempre após incluir a conexão com o banco de dados.
E converta todos as páginas do site para UTF-8 sem BOM (pode fazer com Notepad++).

A: Pesquisei na internet todo e colocar esse código no arquivo de conexão, indicado nesse post resolveu:
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'); 

