Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BaDcereal

PHP/MySQL codificação de caracteres – Acentuação.

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.