Newsgroup: it.comp.www.php
Titolo: mysql encoding

Ciao a tutti!
Il mio db ha una serie di tabelle con encoding latin1 (iso-8859-1).
perchè se io da codice php faccio una update del genere:
UPDATE cliente SET luogoNascita='aaèèè' where id =1
sul database mi viene salvato luogoNascita='aa?' ????
Se la stessa update la faccio da riga di comando direttamente su mysql
funziona alla perfezione. Dove dico a php che mysql usa iso-8859-1
anzichè utf-8? Se non vi è soluzione passerò a utf8_encode e
utf8_decode, ma non mi esalta l'idea di trasformare in ASCII
arbitrariamente, non vorrei incombere in problemi in caso di dump del
db o simili...
Grazie in anticipo
g4b0

g4b0 ha scritto:

perchè l'editor che usi non salva i tuoi file php in utf-8
-- 
Cordialmente.
Melus.
dal mio e-mail togli i simboli di Zorro.

g4b0 ha scritto:

Ciao g4b0
Ti sconsiglio di fare quello che pensi di fare :)
E' più conveniente mettere nel db direttamente le entità dell'html
(es. "Forl&igrave;").
Tanto prima o poi una conversione dovrai pur farla!
Ciao.

Ubu re ha scritto:

L'esempio non è venuto bene  e non so perché comunque è "Forl & i g
r a v e;.

 
Non sono d'accordo.
I dati sono una cosa, la rappresentazione sul web un'altra.
Conserva i dati correttamente in UTF-8, senza entità html.
E converti quando serve.


Il mio problema è che i dati sono presi dall'input dell'utente, il
quale inputa in iso-8859-1 (è un file xml). Ciò che leggo lo devo
salvare su mysql, ma ho risolto facendo processare l'input a
mysql_real_escape_string! non mi chiedete il motivo, ma funziona!
Ora il problema è che devo rimettere questi dati all'interno di un XML
usando DOM, ma la stringa
L'amico pà$%èèè ì?==56\'°#`
diventa
L'amico p&#2341;&#35368; &#53245;=56\'Â°#`
come posso fare?
g4b0

 


Melus ha scritto:

Ciao Melus,
non mi sembra sbagliato quello che scrivi, anche se non dai
spiegazioni.
Un tale 'rigore' lo utilizzerei se il db non fosse quello sul server
web e avesse altre funzioni. E' vero che è una scorciatoia, ma se non
ci sono lupi...
Concordo nel dire di lasciare i dati puliti da tag (mi pare ovvio), ma
dalle entità non ho mai avuto vantaggi, mi puoi fare qualche esempio?
Ciao.

 dalle entità non ho mai avuto vantaggi, mi puoi fare qualche esempio?
Pensa se lo devi presentare su una <textarea> per la modifica e ti tocca
riconvertire le entita' prima di riempire la textarea e riconvertirle
per metterle in DB.
O se lo devi inviare per e-mail o via XML (webservice o AJAX). O se devi
fare una versione testuale della pagina per la stampa.
Bye.
-- 
Alessandro Pellizzari

Alessandro Pellizzari ha scritto:

Ciao Alessandro,
lasciando che l'XML ha le entità e che le textarea richiedono le
entità, nel tuo sito sono più numerose le funzioni mail (per spedire
email non in formato html) delle istruzioni echo?
E' evidentissima la praticità di inserire i dati con le entità, non
ho mai riscontrato problemi ne fastidi, ma non vuol dire che sia la
cosa migliore.
Non so in quale contesto il dato non sia riconvertibile o la
riconversione mi possa creare degli svantaggi.
Io sono un fondamentalista della separazione dati - impaginato -
programma, ma ho trovato chi mi supera e devo capire se mi supera per
pura fede - senza spiegazioni - o se ci sono dei motivi concreti che
francamente non ho presente.
Ciao.

Ubu re ha scritto:

I dati li uso in svariati modi, ricerca, visualizzazione generazione di 
PDF, invio e-mail, procedure non legate al web, ecc. ecc. e dopo vari 
bagni di sangue nel capire perchè una cosa funzionava da una parte e 
dall'altra no, qualcosa si vedeva, qualcosa no, da quando gestisco tutto 
in UTF-8 ho trovato la pace.
Inoltre, alcune banche dati avevano file di provenienza diversa e in 
tempi diversi, così mi son trovato a gestire file in latin_1, iso8859_1, 
windows1252, e simboli vari: pallini, euro.
Lo sapevi che il simbolo - esiste in tre versioni differenti? che esiste 
un simbolo per rappresentare "..."
Ma ci sono alcune accortezze da seguire, tra cui quello di settare il 
tuo editor dei programmi in modo da salvare i file php in utf-8, pena il 
mancato funzionamento di alcune espressioni regolari, e il continuo 
utilizzo di utf8_encode e utf8_decode per qualunque cosa.
Altra regola, usare il meta tag per dichiarare che stai usando UTF-8 al 
browser, ecc. ecc.


Melus ha scritto:

Ciao Melus,
evidentemente eravamo in bagni di sangue diversi :), terrò conto della
tua esperienza.
Un unica cosa, l'ultima regola è insufficiente: non ti accorgerai di
niente finche usi UTF-8 ma quando andrai ad utilizzare alfabeti non
latini scoprirai che il metatag viene valutato solo se il file è html,
ma non se è php. Quindi per codifiche diverse (cinese, cirillico....)
è necessario specificare sempre l'header ('Content-Type: text/html;
charset=xxx').
Te lo dico perché ho patito tanto.
Ciao.

 
in effetti l'header lo specifico sempre nelle pagine dei miei progetti.
non ho trovato problemi con il meta tag, io lo uso così nella sezione 
header delle pagine:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8 ">
