espressioni regolari su UPDATE in MySQL
ad Lunam Jovem
adlunamjovem@yahoo.it
Mar 15 Ago 2006 10:13:58 CEST
Dunque, iniziamo con la causa del tuo problema: la codifica.
Le lettere accentate sono diventate quella strana combinazione di caratteri perche' avete trasferito i dati da
un database codificato come unicode utf-8 a uno codificato (probabilmente) come latin swedish (se usate mysql
senza impostazioni) oppure ISO-88591
Unicode usa due bytes per le lettere estese come le accentate o i caratteri non latini (arabo, ebraico, ecc)
per cui trasferendole in un formato che non supporta piu' di un byte per lettera, le accentate sono state
spezzate in due caratteri strambi.
Uno dei sistemi piu' semplici per automatizzare la correzione sarebbe quello di passare (con uno script)
questi dati su un database in codifica utf-8, perche' i bytes sono ancora li'!
Questo sistema non funziona sempre, dipende da un sacco di cose :(
Per provare crea una tabella uguale a quella che stai usando attualmente ma con codifica utf-8, in questo modo:
CREATE TABLE pippo ( ... ) CHARACTER SET utf8
poi scrivi un piccolo programmino in php che prenda uno per uno i record della tabella vecchia e li inserisca
nella tabella nuova.
Una volta che hai i dati nuovamente corretti dentro alla tabella nuova, fai uno script inverso che pero'
modifichi la codifica al passaggio, usando le librerie multibyte di php (se hai php4 devi installarle, nel 5
ci sono gia')
Per le espressioni regolari: forse ti conviene usare uno script php con preg_replace (che tra l'altro e'
binary safe) perche' mi sembra che REGEXP di mysql non supporti un sacco di cose.
OT: l'hai ricevuta la mia mail di rispostaa quella che mi avevi mandato tu tempo fa? Perche' mi sono reso
conto di avertela spedita con un indirizzo un po' "strano" e forse hai pensato fosse spam :o
Claudio
Chiacchiera con i tuoi amici in tempo reale!
http://it.yahoo.com/mail_it/foot/*http://it.messenger.yahoo.com
Maggiori informazioni sulla lista
glug