2010-07-31 13 views
5

Quando inserisco del testo scritto in unicode nel database, diventano punti interrogativi. La codifica del database è impostata su utf-8. Cos'altro potrebbe essere sbagliato? Quando effettuo il check in phpmyadmin ci sono solo punti interrogativi inseriti!I caratteri Unicode diventano punti interrogativi dopo l'inserimento nel database

Questo è il codice che uso per la connessione al database:

define ("DB_HOST", "localhost"); // set database host 
define ("DB_USER", "root"); // set database user 
define ("DB_PASS","password"); // set database password 
define ("DB_NAME","name"); // set database name 

$link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection."); 
$db = mysql_select_db(DB_NAME, $link) or die("Couldn't select database"); 

mysql_set_charset('utf8',$link); 
mysql_query("SET CHARACTER SET utf8"); 
+0

Quale modulo usi per comunicare con MySQL? mysql, mysqli, pdo-mysql, ...? Anche i dati sono correttamente codificati in utf-8? Esattamente dove vedi i personaggi come punti interrogativi? – VolkerK

+1

Ho aggiunto mysql_query ("SET NAMES 'utf8'"); dopo mysql_select_db e il problema è risolto! –

+0

Si potrebbe voler controllare http://uk3.php.net/manual/en/function.mysql-set-charset.php –

risposta

3

È il testo che si è inserito codifica UTF-8 troppo? O i tuoi file PHP non sono UTF-8? Hai impostato la connessione del client MySQL a UTF-8?

In caso contrario, questa è probabilmente la causa del problema.

2

Come fai a sapere che diventano punti interrogativi? Li vedi come punti interrogativi nelle tue pagine PHP, quando esporti i campi del database, o in software come phpmyadmin?

In entrambi i casi, il problema è probabilmente la codifica della pagina Web piuttosto che del database. Assicurati di aggiungere la seguente riga:

header('Content-Type: text/html; charset=utf-8'); 
+0

Vedo punti interrogativi in ​​phpmyadmin e sul sito anche. –

+0

il font che stai utilizzando è informazioni importanti che potrebbero aiutare nella risoluzione di questo caso – stillstanding

+0

Io uso unicode georgiano. Il nome del font è Sylfaen. –

0
//first make sure your file produce utf-8 chars 
header('Content-Type: text/html; charset=utf-8'); 
//make sure with your spelling 
//write 
mysql_query("SET CHARSET utf8");  
//instead of 
mysql_query("SET CHARACTER SET utf8"); 

//for some reasons 
mysql_query("SET CHARSET SET utf8"); 
//works on some servers and for other servers not.i am not sure why? 

//try using mysql_set_charset("utf8"); only without mysql_query("SET CHARSET utf8"); 
//for me i had the same issue with my server 
//when i used mysql_set_charset("utf8"); only --> the problem solved 
//again make sure with your spelling and try again 
0

Ci dispiace, ma si sono tutti sbagliato .. Il mio amico Re Julien devi solo eseguire:

mysql_query("SET CHARACTER SET utf8"); 
mysql_query("SET CHARSET utf8"); 
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'"); //This statement does the job!!! ;) 

Have a nice day!

Problemi correlati