13244868
Inviato: 15 Apr 2012 21:06
Hmm, fare uscire i caratteri giusti è una cosa inutilmente complessa che sconfina nella magia nera
(vado a memoria perchè è un pò che non lavoro in PHP, e faccio riferimento all'interfaccia MySQL originale, se devi lavorare con MiSSQLi probabilmente devi usare un sistema diverso).
Dunque, supponiamo che tu voglia usare il set di caratteri UTF-8.
Intanto devi essere sicuro che tutte le tabelle e le colonne siano definite con l'encoding UTF-8 (si fa con phpmyadmin), e che i dati che ci metti dentro siano effettivamente codificati come UTF-8. Se per ricaricare il database usi degli INSERT in teoria MySQL dovrebbe codificare tutto in UTF-8 (perchè è così che hai definito le colonne). Invece un dump/restore binario lascia i dati come erano nell'altro database.
Il passo successivo è fare eseguire qualcosa tipo mysql_query("SET NAMES utf8", $conn) subito dopo la connessione al database, naturalmente al posto di $conn metti la variabile che hai usato in fase di connessione.
(se hai un PHP relativamente recente invece di mysql_query("SET NAMES utf8", $conn) puoi usare mysql_set_charset('utf8',$conn); , che da una certa versione in poi è la sintassi raccomandata).
Se invece i dati sul database non sono codificati UTF-8 puoi provare con qualcosa tipo "latin1", "ISO-8859-1" o anche "CP1250". L'importante è che sia lo stesso charset che usa il database e in cui i dati sono codificati.
E' anche possibile trovare qualche diritta sul manuale PHP online, specie tra i commenti degli utenti che sono sotto ogni funzione: Link a pagina di Php.net