Problema com o MySQL e o UTF-8

1

Estou tendo problemas ao configurar um servidor com o UTF8. Bem, eu não estou configurando isso exatamente. Eu cliente de onde trabalho faz e acho que ele não é um especialista configurando servidores web.

Meu aplicativo PHP + MySQL precisa usar o Apache e o MySQL no UTF8. Depois de vários e-mails, essa pessoa configurou o apache com suporte a utf8, mas agora é hora do MySQL e não há como configurá-lo. Eu não sei o que fazer porque eu não sou um administrador de sistemas, mas eu configurei o apache / mysql no Ubuntu com o suporte do utf8 procurando no Google.

O que eu disse a ele é que, por favor, use a próxima configuração em my.cnf :

[mysqld]
character-set-filesystem=UTF8
character-set-server=UTF8
default-collation=UTF8_general_ci
default-character-set=UTF8

[client]
default-character-set=UTF8

[mysqldump]
default-character-set=UTF8

Mas nada mudou. Ele me passou o my.cnf que está sendo executado, você pode vê-lo aqui: link ... e não funciona a codificação UTF8 em MySQL.

O que eu fiz no PHP é lançar uma consulta MySQL toda vez com SET NAMES utf8 '' e funciona como UTF8, mas eu não acho que seja a melhor opção, mas prova que algo está errado configurado. Não?

O que eu posso fazer? O que posso dizer ao administrador do servidor?

Obrigado e desculpe pelo meu mau inglês!

    
por udexter 09.02.2011 / 09:38

3 respostas

0

O que "CHARACTER SET" e "COLLATE" no banco de dados (show create database DB_NAME)?

Tente:

[mysqld]
init-connect='SET NAMES utf8'
    
por 09.02.2011 / 09:47
1

Você está perdendo mais alguns parâmetros no seu my.cnf , aqui está o que parece no meu

[client] 
default-character-set=utf8 

[mysql] 
default-character-set=utf8 

[mysqld]
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
default_character_set=utf8
character_set_server = utf8
collation_server = utf8_general_ci

Isso deve dar suporte completo ao UTF8 no backend do MySQL

    
por 09.02.2011 / 09:46
0
  • Certifique-se de que suas tabelas tenham o conjunto de caracteres correto no MySQL
  • Use a codificação de conteúdo UTF-8 em todas as páginas
  • Defina seu conjunto de caracteres de sessão do MySQL como UTF-8

Todas as minhas páginas começam assim:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Minha conexão com o MySQL é assim: (note a chamada PDO::exec() )

try {
  $dbh = new PDO(('mysql:host=' . $mbdbhost . ';dbname=' . $mbdbname), $mbdbuser, $mbdbpass, array(PDO::ATTR_PERSISTENT => true));
  $dbh->exec('SET CHARACTER SET utf8');
} catch (PDOException $e) {
  header("Location: error.php");
}

As minhas tabelas parecem um pouco com isto:

CREATE TABLE IF NOT EXISTS fotouser (
  idfotouser INT NOT NULL AUTO_INCREMENT ,
  person INT NOT NULL ,
  PRIMARY KEY (idfotouser) ,
  INDEX person (person ASC) ,
  CONSTRAINT person
   FOREIGN KEY (person)
   REFERENCES mb_person (idmb_person)
 ON DELETE NO ACTION
 ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_swedish_ci ;
    
por 09.02.2011 / 10:03

Tags