2013-04-20 27 views
5

Quando vedo i dati memorizzati nel database mysql utilizzando phpmyadmin, i caratteri vengono memorizzati esattamente come é à ç tuttavia quando uso php per visualizzare questi dati su un documento html che ha la seguente struttura :UTF-8 caratteri accentati francesi numero

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title></title> 
</head> 

<body> 
</body> 
</html> 

ho avuto quadrato invece di carattere accentato, però, non ho questo problema con i caratteri accentati sui contenuti statici che non sono stati caricati dalla mysql nella stessa pagina.

quando vedo sul codice sorgente della pagina sembrano essere identici! ad esempio:

parte di dati statici sul codice sorgente visualizzati come:

éçà 

parte dei dati origine mysql:

éçà 

ho provato sostituendo

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

con

<meta http-equiv="Content-Type" content="text/html; charset=windows-1552" /> 

e come risultato ho ottenuto mysql uno fisso, statico con i quadrati!

qualche suggerimento?

+1

Sembra un problema di configurazione errata. Forse i tuoi driver DB non utilizzano UTF-8? Il fatto che i dati provenienti dal DB mostrino OK quando si passa a 'windows-1552' ei file statici non possono significare che il proprio file sorgente sia (correttamente) in UTF-8, ma i dati dal DB sta arrivando nel formato di codifica errato. Qualunque cosa accada, attenersi a UTF-8. – ubik

+0

Grazie per la risposta, ho controllato il database e ho trovato che il Collation è impostato su 'latin1_swedish_ci', potrebbe essere la fonte del problema? – Mbarry

+1

Sì, questa è la fonte del problema, stai memorizzando i tuoi dati in ascii in mysql ma poi provando a mostrarli come utf8 nel tuo html .. – Nelson

risposta

5

questo è problema abbastanza comune charset, è necessario impostare la codifica connessione manualmente per la connessione MySQL (questi dovrebbero essere prime domande si esegue dopo aver stabilito il collegamento):

SET NAMES utf8; 
SET CHARACTER SET utf8; 

Ed anche assicurarsi che ogni tavolo ha CHARACTER SET set a UTF-8.

Oppure è anche possibile aggiornare server configuration.

+0

Riparato con 'SET NAMES utf8;' eseguito come suggerito. Grazie! – Mbarry

+0

Vedere http://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf8-in-my-cnf per le istruzioni su come farlo automaticamente sul lato server. – ubik

2

Sembra un problema di configurazione errata. Molto probabilmente il tuo DB o driver non utilizzano UTF-8.

Il fatto che i dati provenienti dal DB mostrino OK quando si passa a windows-1552 ei file statici non possono significare che il proprio file di origine è (correttamente) in UTF-8, ma i dati dal DB stanno arrivando nel formato di codifica errato.

Qualunque cosa stia succedendo, attenersi a UTF-8.

UPDATE: C'è un filo che spiega come impostare automaticamente la codifica per la connessione:

Change MySQL default character set to UTF-8 in my.cnf?

+0

Grazie Pedro, il problema è stato risolto e non mi attaccherò a windows-1552. dove c'è un termine windows ci sono problemi lol. grazie – Mbarry

Problemi correlati