Jump to content

configurar charset no mysql?


Recommended Posts

Pessoal,

Instalei um sistema em meu servidor, mas aconteceu um probleminha bem chato.

Eu cadastrei uma palavra no sistema "português", assim que salvei, ele salvou como "PortuguÃ", fiz testes com outras palavras com acento e aconteceu a mesma coisa.

Eu estava usando este mesmo sistema no meu outro servidor (cpanel), e havia funcionado normalmente.

Este problema ocorre em um servidor com kloxo

Gostaria de saber se é necessário fazer algum tipo de configuração mysql do kloxo para os caracteres especiais funcionar normalmente.

Se sim, como devo proceder

Obrigado

Chuva

AtarWeb.com.br • Hospedagem de Site + SSL Grátis
█ Revenda de Hospedagem DirectAdmin SSD + SSL Grátis
Link to comment
Share on other sites

Pessoal,

Aparentemente consegui resolver o problema seguindo este tópico:

http://www.gdhpress.com.br/servidores/leia/index.php?p=cap6-22

+ precisamente está dica:

Continuando, a segunda opção é mudar a configuração do Apache para que ele passe a utilizar o ISO-8859-1 como charset padrão, em vez do UTF-8. Nas distribuições derivadas do Debian, isso é definido no arquivo "/etc/apache2/conf.d/charset". Edite o arquivo, substituindo a linha:

AddDefaultCharset UTF-8

por:

AddDefaultCharset ISO-8859-1

Se, por acaso, o arquivo "/etc/apache2/conf.d/charset" não estiver disponível (ou a configuração não surtir efeito), edite o arquivo "/etc/apache2/apache2.conf", descomentando (ou adicionando) a mesma linha.

No Fedora/CentOS a opção é incluída diretamente no arquivo "/etc/httpd/conf/httpd.conf" (perto do final do arquivo), basta substituir a linha "AddDefaultCharset UTF-8" por "AddDefaultCharset ISO-8859-1", assim como no Debian.

Se o servidor hospeda páginas escritas em português, é recomendável editar também a linha:

LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw

... no "/etc/apache2/apache2.conf", mudando a ordem das linguagens, de forma que o pt-br e o pt fiquem no início:

LanguagePriority pt-br pt en da nl et fr de el it ja ko no pl ltz ca es sv tw

Para que a configuração entre em vigor, é preciso fazer com que o Apache 2 recarregue a configuração:

# /etc/init.d/apache2 reload

ou:

# service httpd reload

O detalhe é que eu estava desde a tarde procurando e só agora consegui achar essa dica :(

AtarWeb.com.br • Hospedagem de Site + SSL Grátis
█ Revenda de Hospedagem DirectAdmin SSD + SSL Grátis
Link to comment
Share on other sites

Então João,

No caso, o bd foi criado pelo kloxo, mas seria mesma coisa (creio eu) se tivesse criado pelo cpanel

Ele cria conforme padrão do servidor (eu acho)

E no caso do kloxo e cpanel, não ha opção p/ criar o banco de dados com estes dados que tu comentou, apenas se eu fosse criar diretamente no phpadymim (que só vi estas opções de criação no kloxo :S

AtarWeb.com.br • Hospedagem de Site + SSL Grátis
█ Revenda de Hospedagem DirectAdmin SSD + SSL Grátis
Link to comment
Share on other sites

Só que essa dica aí é a solução tapa-buraco do pedreiro. O certo é usar UTF-8 (tecnologia mais nova, etc). O programa (PHP, Apache) é que tem que rodar em UTF-8, não o BD...

A UTF-8 é tão antiga quanto os demais padrões, as collations variam conforme a versão do sistema operacional e do SGBD/SRGBD utilizado. No caso, você pode consultar uma extensa lista aqui, não existe isso de tecnologia mais novas :S

http://www.collation-charts.org/mysql60/

Sugiro olhar com atenção a collation latin1_swedish_ci e verás que ele comporta todos caracteres de nossa língua, enquanto somente a collation utf8_swedish_ci teria os caracteres de nossa língua e alguns extras. Mas o problema é que por padrão, usa-se o utf8_bin que por sua vez não tem caracteres acentuados...

Atente ainda para o fato, de que a aplicação tem de estar sendo interpretada pelo browser no mesmo conjunto de caracteres. No caso do HTML, sempre coloque na header a meta-tag: <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />

Se você for usar Ajax, poderá haver erros de acentuação decorrentes do arquivo.php chamado não estar usando o mesmo conjunto de caracteres, nesse caso, usa-se a função:

header("Content-Type: text/html; charset=ISO-8859-1", true);

basta coloca-la no topo do arquivo.php.

Abraços

Edited by joaopaulo
Link to comment
Share on other sites

Pessoal,

E este procedimento que precisei fazer, o servidor estava em utf-8 e eu mudei para iso...corrigiu o problema.

Lembrando que o banco de dados foi criado no servidor (não foi importado)

Nos outros servidores que eu tenho, nunca passei por isso (de precisar reconfigurar o servidor)

Então eu pergunto...a solução que encontrei é a mais correta? haveria outra coisa que poderia ser feita? para "solucionar" este mesmo problema?

Abração e vamo que vamo

AtarWeb.com.br • Hospedagem de Site + SSL Grátis
█ Revenda de Hospedagem DirectAdmin SSD + SSL Grátis
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Do you agree with our terms?