BaDcereal 4 Denunciar post Postado Janeiro 21, 2010 PHP/MySQL codificação de caracteres – Acentuação. Esses dias fiquei apanhando para acertar a codificação dos caracteres no sistema, depois de muita pesquisa na net, o pessoal sempre falando a mesma coisa, não encontrei a solução, então depois de horas tentando consegui resolver o problema. Não vou entrar em detalhes então vamos à receita do bolo: 1º Colocar o cabeçalho no código php: <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> 2º A conexão que o php faz com o banco também deve conter o cabeçalho: header("Content-Type: text/html; charset=ISO-8859-1",true); Isso pode ser inserido no arquivo que faz a conexão com o banco ou dentro do documento php. Até ai nenhuma novidade. 3º Verificar em qual codificação o MySQL esta trabalhando: mysql> status; -------------- mysql Ver 14.12 Distrib 5.0.84, for pc-linux-gnu (i686) using readline 6.0 Connection id: 28 Current database: Current user: root@localhost SSL: Not in use Current pager: /usr/bin/less Using outfile: '' Using delimiter: ; Server version: 5.0.84-log Gentoo Linux mysql-5.0.84-r1 Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8 Db characterset: utf8 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 46 min 41 sec Threads: 2 Questions: 897 Slow queries: 0 Opens: 86 Flush tables: 1 Open tables: 45 Queries per second avg: 0.320 Como você pode notar Server characterset: utf8 <= Servidor esta com utf8 Db characterset: utf8 <= O banco que esta sendo usado no momento esta com utf8 Client characterset: latin1 <= Aqui é o pulo do gato o Cliente tem que ser o mesmo que o apache esta enviando, se estiver setado utf8 vai dar problema. Conn. characterset: latin1 <= E a conexão também. Mas como alterar isso ??? 4º Alterando as configs do /etc/mysql/my.cnf – “Estou supondo que você esteja usando Linux, algumas distros de Linux podem mudar o diretório do arquivo de configuração, se você esta usando windows ou outro sistema operacional verifique onde fica o arquivo.” [mysql] character-sets-dir=/usr/share/mysql/charsets #default-character-set=utf8 <=comentar as linhas com utf8 e inserir as linhas com latin1 default-character-set=latin1 [mysqladmin] character-sets-dir=/usr/share/mysql/charsets #default-character-set=utf8 default-character-set=latin1 [mysqlcheck] character-sets-dir=/usr/share/mysql/charsets #default-character-set=utf8 default-character-set=latin1 [mysqldump] character-sets-dir=/usr/share/mysql/charsets #default-character-set=utf8 default-character-set=latin1 [mysqlimport] character-sets-dir=/usr/share/mysql/charsets #default-character-set=utf8 default-character-set=latin1 [mysqlshow] character-sets-dir=/usr/share/mysql/charsets #default-character-set=utf8 default-character-set=latin1 5º Alterar as configs do /etc/php/apache2-php5/php.ini - “Estou supondo que você esteja usando Linux, algumas distros de Linux podem mudar o diretório do arquivo de configuração, se você esta usando windows ou outro sistema operacional verifique onde fica o arquivo.” ; As of 4.0b4, PHP always outputs a character encoding by default in ; the Content-type: header. To disable sending of the charset, simply ; set it to be empty. ; ; PHP's built-in default is text/html ;default_mimetype = "text/html" <= comentar essa e descomentar a de baixo default_charset = "iso-8859-1" mais abaixo ; MySQL extensions default connection charset settings mysql.connect_charset = latin1 <= descomentar essa mysqli.connect_charset = latin1 <= e essa linha para setar o PHP para trabalhar com latin1 ;pdo_mysql.connect_charset = utf8 6º Agora tudo ok e funcionando perfeitamente :D Até a próxima. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 25, 2010 Prefiro UTF-8. É a codificação que vem sendo usada pelos principais aplicativos. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Pode representar qualquer carácter universal padrão do Unicode, sendo também compatível com o ASCII. Por esta razão, está lentamente a ser adaptado como tipo de codificação padrão para email, páginas web, e outros locais onde os caracteres são armazenados. fonte: http://pt.wikipedia.org/wiki/UTF-8 Compartilhar este post Link para o post Compartilhar em outros sites