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