Ho un sito multilingua codificato in utf-8.
Il mio problema è che quando, tramite una query sql inserisco del testo in cinese contenuto in una casella di testo nel database per poi ripescarlo, viene visualizzato con una serie di punti di domanda.
La connessione al db, contenuta nel file di configurazione incluso da tutte le pagine, l'ho impostata in questo modo
Nella head di tutte le pagine ho scritto questo codiceCodice PHP:$db_username='xxxxxxxx';
$db_password='xxxxxxxxxx';
$db_host='xxxxxxxxxxxx';
$db=mysql_connect("$db_host","$db_username","$db_password") or die(mysql_error());
$db_select = mysql_selectdb("xxxxxxxxxx") or die(mysql_error());
mysql_query("SET NAMES 'utf8'", $db) or die("Errore: ".mysql_error());
mysql_query("SET CHARACTER SET 'utf8'", $db) or die("Errore: ".mysql_error());
La query al db è questaCodice PHP:header("Content-Type: text/html; charset=utf-8");
La stringa mi arriva codificata in utf-8 dalla casella di testo. Lo so perchè per contarne il numero di caratteri uso questa apposita funzioneCodice PHP:$str_sql = "INSERT INTO tabella(uno,due,tre,control,time) VALUES('$uno','$due','$tre','$control','$time')";
mysql_query($str_sql) or die("Errore: ".mysql_error());
Per quanto riguarda MySQL, ha queste impostazioniCodice PHP:function utf8_strlen($str) {
$str = stripslashes($str);
$count = 0;
for ($i = 0; $i < strlen($str); ++$i) {
if ((ord($str[$i]) & 0xC0) != 0x80) {
++$count;
}
}
return $count;
}
Set di caratteri MySQL: UTF-8 Unicode (utf8)
collazione della connessione di MySQL: utf8_unicode_ci
La collation delle colonne della tabella è utf8_general_ci.
In locale funzionava tutto bene, i problemi li ho sull'host!

Rispondi quotando
