Lidando com UTF-8 com o PHP e MySQL
Crie uma tabela com o conjunto de caracteres UTF-8, como no exemplo abaixo.
Se você preferir, crie antes um banco de dados em UTF-8, exemplo:
Para fazer operações em seu banco de dados, será necessário que crie um arquivo que o início dele seja semelhante a este:
Lembre-se de incluir a seguinte meta entre a tag <head> e </head>:
Exemplo:
CREATE TABLE document ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, unicodeText VARCHAR(45) NOT NULL ) CHARACTER SET utf8 COLLATE utf8_general_ci;
Se você preferir, crie antes um banco de dados em UTF-8, exemplo:
CREATE DATABASE `banco` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Para fazer operações em seu banco de dados, será necessário que crie um arquivo que o início dele seja semelhante a este:
<?php # Informa qual o conjunto de caracteres será usado. header('Content-Type: text/html; charset=utf-8'); # Conecta ao banco de dados $conexao = mysql_connect('localhost','usuario','senha'); $banco = mysql_select_db('banco'); # Aqui está o segredo 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'); ?>
Lembre-se de incluir a seguinte meta entre a tag <head> e </head>:
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
Exemplo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Título da página</title> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> </head> <body> <p>Conteúdo da página</p> </body> </html>
Muito boa a sacada Rafael, vc está de parabéns!
Realmente o assunto codificação é simples, mas a gente só vai estudar e aprender, depois que os erros "aparecem".
Grande abraço!
Realmente o assunto codificação é simples, mas a gente só vai estudar e aprender, depois que os erros "aparecem".
Grande abraço!
27/08/2013 7:24am
(~11 anos atrás)
Parabéns e muito obrigado Rafael!
Vi várias dicas sobre esse assunto, mas nada dava certo.
Sucesso e Deus abençoe!!
Abraços!
Vi várias dicas sobre esse assunto, mas nada dava certo.
Sucesso e Deus abençoe!!
Abraços!
23/02/2012 3:09pm
(~12 anos atrás)
Rafael, td blz?
É o seguinte:
Tenho meu BD todo em utf8_unicode_ci. Na exibição de dados ele exibe bem, td certo mas, qndo eu cadastro alguma coisa, os carcteres depois dos acentos somem, ex: Música - fica assim: M, saúde - fica: sa.
O que será?
É o seguinte:
Tenho meu BD todo em utf8_unicode_ci. Na exibição de dados ele exibe bem, td certo mas, qndo eu cadastro alguma coisa, os carcteres depois dos acentos somem, ex: Música - fica assim: M, saúde - fica: sa.
O que será?
02/11/2009 5:07pm
(~15 anos atrás)
Rafael Almeida,
Parabéns pelo artigo, tenho tido problema com isso a algum tempo e nunca achei algo que funcionasse, ou não entendia o que lia, mas esse seu artigo me ajudou muito.
Obrigado.
Parabéns pelo artigo, tenho tido problema com isso a algum tempo e nunca achei algo que funcionasse, ou não entendia o que lia, mas esse seu artigo me ajudou muito.
Obrigado.
16/07/2009 3:10pm
(~15 anos atrás)
Valeu queridão pelo post, MAS.. em vez disso, configura no conf do mysql que é mais fácil né ;)
[]s brother.. bom post!
[]s brother.. bom post!
07/05/2009 5:33pm
(~15 anos atrás)
Se o seu banco de dados mysql por alguma razão dos infernos (ou está num servidor shared) e não consegue inserir dados em UTF-8 talvez seja útil essas linhas após vc fazer a conexão.
$conx = mysql_connect(xxxxxxx);
// dica para shared hosting
mysql_query("SET CHARACTER SET utf8");
//mysql_query("SET NAMES utf8");
//mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'"); // medida extrema, opcional
$conx = mysql_connect(xxxxxxx);
// dica para shared hosting
mysql_query("SET CHARACTER SET utf8");
//mysql_query("SET NAMES utf8");
//mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'"); // medida extrema, opcional
02/05/2009 11:16pm
(~15 anos atrás)
Seria interessante publicar um artigo nesta mesma linha que falasse de como trabalhar com migracao de bancos de dados mysql com versoes diferentes.
02/05/2009 6:39am
(~15 anos atrás)
#!/bin/sh
Content-type: text/html
Language: pt-br
Charset: UTF-8-pt-br