Moonspeak

| 6 Comments

Porca miseria. Ne è passato di tempo, eh?

Premessa: sono tornato a Londra, e sto cercando lavoro. Il giappone è stato divertente, ma dopotutto era una vacanza lunga tre anni. Ora è tempo di iniziare la vita reale.

Quindi... cos'è successo? Il mio host ha cambiato server e purtroppo la configurazione era talmente diversa che il database è rimasto, per usare un termine volgare, fottuto. Finchè uno parla soltanto una lingua tutto funziona bene, ma per i multilinguisti nel mondo le cose sono spesso difficili. Dato che io scrivo in inglese, italiano, francese e giapponese, il database era dovutamente encodato in UTF-8, un formato internazionale che permette di scrivere in praticamente qualsiasi lingua senza problemi.

Peccato che non tutti i developer su Internet sappiano usarlo.

Il problema maggiore era che tutti gli accenti e caratteri giapponesi nel database erano stati corrotti, quindi invece di "è cosí", c'era scritto "√œ cos√®". Alla fine ho tirato fuori un backup recente, cambiato l'encoding del database in UTF-8 e rimesso tutti i dati nel formato giusto. E da lì sono cominciati i problemi.

Il database era tutto OK, in PHPMyAdmin tutti i dati erano in ordine, con tutti gli accenti giusti. Il database era UTF-8, come pure tutti i dati. Ho detto al server di usare UTF-8 come encoding di default, ho pure detto a PHP di girare tutti gli script in UTF-8.

Però non è servito a nulla. Sia MovableType (il sistema del blog) come MétEX, il mio tour virtuale della metrò di Parigi, si rifiutarono di mostrare i dati in modo corretto, sostituendo gli accenti con simboli senza senso. Non ci capivo niente: TUTTO stava girando con UTF-8, però per qualche ragione quando i dati dovevano essere tirati fuori dal database, diventavano corrotti.

Ho smesso di aggiornare il blog per paura di corrompere tutte le pagine già esistenti - e per questa ragione non ho approvato neanche commenti nuovi. Per un anno il sito è rimasto bloccato, incapace d'essere aggiornato per un errore impossibile.

Ora però che sto cercando lavoro mi sono detto che dovevo in qualche modo aggiustare tutto. Il server è stato cambiato settimana scorsa, però presentava esattamente lo stesso errore. E solo due giorni fa ho scoperto la fonte.

Il problema stava, come pensavo, in PHP. Più precisamente, il driver MySQL di PHP (e anche di CGI). Se compilato con i settaggi default, richiede i dati sempre con l'encoding latin1. Quindi provate a capire - tutti i dati sono in UTF-8, il database è settato per lavorare in UTF-8, tutti gli script pretendono dati UTF-8, però il programmino che ritira i dati li richiede in latin1. E da lì, i guai.

La soluzione? Aggiungere il comando SQL, "SET NAMES 'utf8'" prima di qualsiasi altro comando. Questo forza il driver a richiedere i dati in UTF-8.

E un bel "vaffanculo pezzi di merda" a tutti i coder che non pensano alle lingue straniere.

Quindi, riecco tutto. Continuerò ad aggiornare il blog? Forse. Per ora non credo, purtroppo non succede abbastanza nella mia vita ora da giustificare la presenza di aggiornamenti costanti. Forse in futuro, boh. Se avete sempre il feed RSS allora siete a posto. E SE avete ancora il mio feed RSS, perchè? o_O

6 Comments

È tornato PkerUNO... *commozione*

"Tornato" è una parola grossa... :P

Io ho il feed RSS. Bentornato. Anzi, come dici tu, BenTORNATO.

Non è quello che intendevo. Comunque grassie. :P

E' tornato Richard O_O
Epocale :D

Maddai. >_<

Leave a comment

Uniqlock

Last.FM

Flickr

www.flickr.com
This is a Flickr badge showing public photos from PkerUNO. Make your own badge here.

Giochi



Powered by Movable Type 4.23-en