O que "CHARACTER SET" e "COLLATE" no banco de dados (show create database DB_NAME)?
Tente:
[mysqld]
init-connect='SET NAMES utf8'
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!
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
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 ;
Tags mysql