UTF-8 em MySQL

41 views
Skip to first unread message

Luís Aurélio Casoni

unread,
Apr 13, 2016, 8:26:47 AM4/13/16
to PHP MS
Boa noite,

Tem um comportamento que tento entender no meu servidor XAMPP (tanto no Linux quanto no Windows), onde está rodando o meu site para testes. Meu site está totalmente configurado para UTF-8 (header, meta, codificação do BD etc). Mas quando eu preciso buscar algum dado de texto do meu BD MySQL, não aparece corretamente os acentos (mostrando em seu lugar interrogações), forçando a usar na string que recebeu dados do BD a função utf8_encode antes de exibir-las, só assim resolvi.

O problema é que quando portei o site para o servidor de produção, as strings codificadas ficaram cheias de caracteres estranhos novamente, e tirei o utf8_encode das strings e resolvi.

Existe alguma outra de configuração no PHP e no MySQL sobre UTF-8, além das já conhecidas (setar o header, a tag meta, codificação do BD que já havia feito)?

Atenciosamente,

Luís

Igor Padovan da Silva

unread,
Apr 13, 2016, 9:11:37 AM4/13/16
to ph...@googlegroups.com
O seu editor de texto/IDE está configurado para salvar seus arquivos em utf-8?

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "phpms" em Grupos do Google.
As regras de utilização deste grupo encontram-se em: http://www.phpms.org/regras-da-lista
Para postar neste grupo, envie um e-mail para ph...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para phpms-un...@googlegroups.com
Para ver mais opções, visite este grupo em http://groups.google.com/group/phpms?hl=pt-PT
Para acessar o site do grupo, visite: http://www.phpms.org/

---
Você recebeu essa mensagem porque está inscrito no grupo "PHP MS" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para phpms+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Igor Padovan da Silva
about.me/igorpadovan

Elias Bosco

unread,
Apr 13, 2016, 9:11:37 AM4/13/16
to ph...@googlegroups.com

Bom dia Luis, provavelmente há dados não utf8 inserido em seu BD.

--

Luís Aurélio Casoni

unread,
Apr 13, 2016, 1:38:22 PM4/13/16
to PHP MS
Caro Igor, configurei tudo em UTF-8, uso o Notepad++ e Gedit (depois troquei pro Sublime), onde é fácil trocar a codificação ou salva direto em UTF-8.

Caro Elias, quando criei o BD no PhpMyAdmin (no XAMPP), coloquei como colação: utf8_general_ci (A mesma colação que a Hostinger usa no PMA por padrão). Como seria inserir dados não UTF-8 no BD? No meu caso, usei o recurso do PMA de puxar um arquivo CSV para o BD, mas se eu não me engano este arquivo era UTF-8 também. Fiz errado?

Atenciosamente,

Luís

Humberto Pereira

unread,
Apr 13, 2016, 2:54:41 PM4/13/16
to Lista PHPMS
Olá Luis,

   muito provavelmente os dados que você inseriu não estavam em UTF-8. Não adianta você dizer uma codificação se os dados que você está usando estão em outra, o banco não vai validar se os dados estão na codificação certa.

O ideal é pegar esse CSV e confirmar que todos os dados estão como UTF, e se acaso houver algum texto que não esteja, converter. 

Att,
Humberto Pereira
http://www.begnini.net

Felipe Vargas

unread,
Apr 13, 2016, 3:09:46 PM4/13/16
to PHP MS & Cia
Luis,

eu já tive problemas semelhantes inserindo dados pelo phpMyAdmin.

Cadastre os dados somente pela aplicação, eu não sei qual é o bug do phpMyAdmin, mas eu tive esse problema, que salvava na codificação errada, aí na aplicação aparecia incorreto.


Att.
Felipe V. Rigo

2016-04-13 13:33 GMT-04:00 Luís Aurélio Casoni <luis.au...@gmail.com>:

Elias Bosco

unread,
Apr 13, 2016, 4:41:03 PM4/13/16
to ph...@googlegroups.com

Oi Luís,

Provavelmente o problema está no PMA, q possivelmente não está em utf8, pq vc não tenta abrir acesso pro seu IP e faz via cliente (baixe o MySQL workbench) e da uma conferida nesse CSV, ele provavelmente não está em utf8.

Luís Aurélio Casoni

unread,
Apr 14, 2016, 10:44:39 AM4/14/16
to PHP MS
Prezados,

Vou verificar os dados e dou uma devolutiva para vocês até amanhã.

Obrigado pela atenção,

Luís

Felippi

unread,
Apr 14, 2016, 10:44:39 AM4/14/16
to PHP MS
No php.ini
default_charset = "UTF-8"

Luís Aurélio Casoni

unread,
Apr 15, 2016, 1:45:36 PM4/15/16
to PHP MS
Prezados,

Verifiquei todas as colações do BD (no banco, nas tabelas e nos campos) e estão em UTF-8.
Verifiquei todos os dados de entrada (sejam SQL sejam CSV) e estão todos em UTF-8.
Criei um novo BD no XAMPP com as colações certas, importando um SQL (na Hostinger funcionou certinho) mas no XAMPP continua dando caracteres estranhos.

Mas parece que o Felippi deu a solução.
Eu verifiquei no phpinfo() da Hostinger e o charset já está em UTF-8.
Vou verificar como está no XAMPP e dou uma devolutiva a vocês.

Atenciosamente,
Luís

P.S: PMA no XAMPP (versão 4.5.1) PMA na Hostinger (versão 3.5.2.2). Ambos rodam o PHP 7, mas também houve erro no PHP 5.6.

Luís Aurélio Casoni

unread,
Apr 15, 2016, 1:45:37 PM4/15/16
to PHP MS
Prezados,

Vi todos os dados que inseri no banco (sejam CSV ou arquivos SQL de backup) e são todos UTF-8.

Todo o banco de dados está na colação utf8_unicode_ci em ambos os servidores, mas ainda continua dando a discrepância (um precisa usar utf8_encode e o outro já está pronto para exibir os dados).

Ao Fellipi, os dois servidores estão com a mesma configuração de default_charset.

Vou ter que falar com a assistência da Apache Friends para verificar o que ocorre no XAMPP.

Se alguém tiver outra solução, eu agradeço.

Atenciosamente,

Luís

P.S.:Eu até usei os comandos na conexão ao banco
mysqli_set_charset($conexao, "utf-8");
setlocale(LC_ALL, 'pt_BR.utf8');
e nada adiantou.

Felippi

unread,
Apr 17, 2016, 2:19:33 AM4/17/16
to PHP MS
Eu utilizo o Navicat para trabalhar no banco de dados. Instala ele e verifique se os dados estão corretos no banco.
Codificação é realmente um saco.
Verifique se é na inserção ou na leitura dos dados. Com o Chrome, é possível ver a codificação de exibição da página.
Acredito que o que o Elias disse deve ser o mais provável, o PMA esteja zuando os seus dados.
A tabela pode estar em UTF-8 e os dados em si estarem em outra codificação. Isso acontece porque a maioria dos caracteres Latin1 possuem correspondentes no UTF8, por exemplo, o caractere "õ", quando em utf-8 mostrado como latin1, corresponde ao mesmo código da dupla de caracteres "õ".

Uma pergunta, os caracteres são irreconhecíveis ou são caracteres imprimíveis geralmente começando com Ã?

Luís Aurélio Casoni

unread,
Apr 18, 2016, 10:42:45 AM4/18/16
to PHP MS
Olá Felippi,

Vou ver como mexer no NavCat e verifico como está o BD, um amigo meu pediu para ver o mesmo usando o comando SHOW CREATE TABLE.

Sobre a forma dos caracteres, quando eu uso o XAMPP, os caracteres acentuados ficam assim: �, quando não uso utf8_encode. Na Hostinger, quando uso utf8_encode, os caracteres ficam do jeito que você descreveu, acompanhados de pontos de interrogação e exclamação.

Atenciosamente,

Luis
Reply all
Reply to author
Forward
0 new messages