Leggi il Topic


Indice del forumMotobarForum Internet & Hi-Tech

   

Pagina 1 di 1
 
Problemi lettere accentate [dopo migrazione dati MySQL]
13243510
13243510 Inviato: 15 Apr 2012 14:59
Oggetto: Problemi lettere accentate [dopo migrazione dati MySQL]
 

Salve,
ho dovuto trasferire un forum phpBB con relativo database da un server all’altro ma purtroppo il risultato finale è stata la comparsa di caratteri speciali al posto di quelli accentati tipo e’ al posto di è, à al posto di à, ° al posto di ° ecc.
Ho fatto diverse prove per sistemare, partendo dalla correzione manuale dei caratteri e poi reimportazione del database tramite dump, ma poi i caratteri speciali riprendono il posto di quelli accentati, verificato anche riscaricando poi il database. Ho provato quindi anche a cambiare charset del database, dall’attuale UTF-8 al latin, ma il risultato è stato di veder comparire altri caratteri speciali oltre a quelli già esistenti.
Qualcuno ha quindi idea di come si possa fare per ripristinare una volta per tutte i caratteri accentati? Il vecchio database non è più disponibile, quindi devo modificare quello aggiornato.
Grazie mille


__________________
idee regalo divertenti, (original gifts in inglese), ostokset, gas gas moto
 
13244868
13244868 Inviato: 15 Apr 2012 21:06
 

Hmm, fare uscire i caratteri giusti è una cosa inutilmente complessa che sconfina nella magia nera icon_asd.gif

(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
 
Mostra prima i messaggi di:





Pagina 1 di 1

Non puoi inserire nuovi Topic
Non puoi rispondere ai Topic
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi
 
Indice del forumMotobarForum Internet & Hi-Tech

Forums ©