[FUG-BR] Mysql não aceita acentos.

Eder ederbsd em gmail.com
Sábado Fevereiro 24 21:27:33 BRT 2007


Oi,

>> O problema, Eder, é que pode haver uma diferença de charset usado na
>> conexão entre o cliente e o servidor mysql.

R = Obviamente que pode haver, por isso existem os locales. Tanto no
banco quanto na linguagem, não entendo muito de PHP, mais em C, C++
basta passar o locale.

>> Normalmente, no módulo php, isto acarreta em aleatoriamente você receber
>> os dados em latin1 e utf-8, mesmo quando uma tabela está com a opção de
>> charset em latin1.

R = Não, defina o que é "aleatoriamente" no seu conceito acima.

>> E o problema continua mesmo depois de mudado o charset
>> de uma tabela que era utf-8 para latin1. Como disse, não é um problema no
>> chaset usado pelo servidor, mas sim pela conexão entre o servidor e um
>> cliente mysql, pois nessa ele tenta fazer uma conversão de charsets. Leia
>> sobre isto aqui:

R = Concordo, então no PHP set o locale,

setlocale(LC_COLLATE,  "pt_BR.ISO8859-1");

>> A única coisa que fez os resultados de queries serem consistentes foi
>> certificando que ambos os binários (cliente e servidor) usavam o mesmo
>> charset padrão para conexões. E infelizmente isto fica compilado com os
>> binários, não fica em um arquivo de configuração. Senão não precisaríamos
>> de ajustar esta opção ao compilar o mysql, certo?

R = Errado, não é necessário recompilar o MySQL para configurar isso, se ele por
padrão já é compilado com suporte aos characters.

mysql> SHOW VARIABLES LIKE 'coll%';
mysql> SHOW VARIABLES LIKE 'character%';

No arquivo de configuração do mysql no /etc/my.cnf basta setar o locale.

[mysqld]
character_sets_dir=/usr/local/share/mysql/charsets/
default-character-set=utf8
default-collation=utf8_general_ci

[client]
default-character-set=utf8

>> Então, me desculpe, mas listar os charsets disponíveis para as tabelas não
>> resolveria o problema do nosso amigo da lista.

R = Realmente digitar o comando não resolveria em nada.

Att Eder,


On 2/24/07, Rafael Fernandes <ragatol at netsite.com.br> wrote:
> O problema, Eder, é que pode haver uma diferença de charset usado na
> conexão entre o cliente e o servidor mysql.
>
> Normalmente, no módulo php, isto acarreta em aleatoriamente você receber
> os dados em latin1 e utf-8, mesmo quando uma tabela está com a opção de
> charset em latin1. E o problema continua mesmo depois de mudado o charset
> de uma tabela que era utf-8 para latin1. Como disse, não é um problema no
> chaset usado pelo servidor, mas sim pela conexão entre o servidor e um
> cliente mysql, pois nessa ele tenta fazer uma conversão de charsets. Leia
> sobre isto aqui:
> http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
>
> Este problema aconteceu comigo quando migrei um banco de dados de um
> servidor para outro. Como o charset da tabela não foi alterado, não era
> para ocorrer este tipo de problema. E a única diferença entre um servidor
> e outro era que o charset padrão usado nas conexões era diferente (latin1
> no antigo, utf-8 no novo).
>
> A única coisa que fez os resultados de queries serem consistentes foi
> certificando que ambos os binários (cliente e servidor) usavam o mesmo
> charset padrão para conexões. E infelizmente isto fica compilado com os
> binários, não fica em um arquivo de configuração. Senão não precisaríamos
> de ajustar esta opção ao compilar o mysql, certo?
>
> Então, me desculpe, mas listar os charsets disponíveis para as tabelas não
> resolveria o problema do nosso amigo da lista.
>
> Até,
>
> Rafael.
>
> On Sat, 24 Feb 2007 15:20:04 -0200, Eder <ederbsd at gmail.com> wrote:
>
> > Olá,
> >
> > Basta alterar o character sets.
> >
> > mysql>  SHOW CHARACTER SET;
> >
> > http://dev.mysql.com/doc/refman/5.0/en/charset-mysql.html
> >
> > Att, eder.
> >
> > On 2/23/07, Rafael Fernandes <ragatol at netsite.com.br> wrote:
> >> É amigo eu passei por isto e normalmente o mysql fica com o charset
> >> compilado tanto no servidor quanto no cliente (ou bibliotecas usadas por
> >> outros programas, no caso o php).
> >> O que solucionou meu problema 100% foi recompilar o mysql-server (se não
> >> me engano, isto já recompila a biblioteca mysql-server, mas confira).
> >> Recompile também o módulo mysql do php se ele foi linkado estaticamente
> >> com a biblioteca mysql.
> >>
> >> Lembre-se sempre que usamos latin1/iso-8859-1 (são a mesma coisa) e irá
> >> evitar muita dor de cabeça.
> >>
> >> Até,
> >>
> >> Rafael.
> >>
> >> On Fri, 23 Feb 2007 11:56:32 -0200, Rafael Stockler
> >> <rafael.stockler at gmail.com> wrote:
> >>
> >> > Bom dia a todos,
> >> >
> >> > Estou com o seguinte problema.
> >> >
> >> > Tenho aqui instalado o Apache 2, php 5 e mysql 5.
> >> >
> >> > O problema que estou enfrentando é o fato de o mysql não estar
> >> > cadastrando palavras com acentos. Verifiquei se o php estava mostrando
> >> > certo e pelo q vi sim.
> >> >
> >> > O charset no mysql eh o utf8-general. Jah tentei colocar o latin 1 e
> >> > outras e nada.
> >> >
> >> > Alguem já passou por isso ou saberia o q pode ser isso?
> >> >
> >> > Vlw.
> >> > -------------------------
> >> > Histórico: http://www.fug.com.br/historico/html/freebsd/
> >> > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >>
> >>
> >> -------------------------
> >> Histórico: http://www.fug.com.br/historico/html/freebsd/
> >> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> >>
> >
> >
>
>
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>


-- 
"Do not worry about your difficulties in mathematics;
I can assure you that mine are still greater."
Albert Einstein


Mais detalhes sobre a lista de discussão freebsd