Newsgroup: it.comp.www.php
Titolo: problemi di encoding

Scusate il xpost, ma purtroppo vedo che il ng su mysql ï¿œ poco 
movimentato e magari per queste cose mi puï¿œ aiutare anche un esperto di 
php, comunque ho impostato il f-up sul ng di pertinenza.
Io ho un problema con i charset: avevo un db con collation latin ma in 
cui sono stati inseriti caratteri vari, per cui adesso nei campi di 
testo ho stringhe del tipo %u03A0o%u03C4%u03C4yw%u03B1n.
Sto cercando in tutti i modi di convertirlo in utf8 senza molto 
successo: adesso mysql ï¿œ configurato tutto in utf8, ho provato a 
convertire la tabella ma niente, se ne scorro il contenuto con 
phpmyadmin vedo sempre le stringhe come sopra. C'ï¿œ un modo per risolvere 
il tutto?

 C'ï¿œ un modo per risolvere il tutto?
Prova a leggere queste duepagine per vedere se ti sono di aiuto:
http://developer.loftdigital.com/blog/php-utf-8-cheatsheet
http://www.joelonsoftware.com/articles/Unicode.html
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
God must love the common man; He made so many of them.

 
in realtï¿œ no :(
quello che non capisco ï¿œ questo: sullo stesso phpmyadmin non vedo i 
caratteri giusti, nonostante sia tutto configurato come utf-8! E' normale?

 caratteri giusti, nonostante sia tutto configurato come utf-8! E' normale?
Controlla che il server ti passi effettivamente le pagine in UTF-8, sia in
phpmyadmin sia nel tuo sito.
Per verificarlo con Firefox premi Ctrl-I (almeno nella versione inglese e'
cosi') quando visualizzi la pagina.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Isn't it strange, G'Kar? When we first met, I had no power...
and all the choices I could ever want. And now I have all the power
I could ever want... and no choices at all.
No choice... at all.
    --Londo, "The fall of Centauri Prime"

 
Guardando le info della pagina quando sono in phpmyadmin mi dice che la 
codifica ï¿œ utf8... sto impazzendo!

 codifica ï¿œ utf8... sto impazzendo!
Fai un
	SHOW CREATE TABLE nometabella
per vedere che sia effettivamente settata tutta (tabella e campi) in utf8
(sto finendo le idee)
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Fooling around with alternating current is just a waste of time.
Nobody will use it, ever.
       --Thomas Edison, 1889

 
Questo ï¿œ il risultato:
CREATE TABLE `players` (
  `idP` int(11) NOT NULL,
  `nome` text,
  `idG` int(11) NOT NULL,
  `livello` float NOT NULL,
  `eco` int(11) NOT NULL,
  `upgrade` tinyint(1) NOT NULL,
  `inattivo` tinyint(1) NOT NULL,
  `dataInserimento` text NOT NULL,
  PRIMARY KEY  (`idP`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

dimenticavo... grazie per l'aiuto, comunque vada :)

 ) ENGINE=MyISAM DEFAULT CHARSET=utf8
Se al posto di TEXT definisci i campi BLOB? Presumo sia li' che hai dei problemi.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Disraeli was pretty close: actually, there are Lies, Damn lies,
Statistics, Benchmarks, and Delivery dates.

 dimenticavo... grazie per l'aiuto, comunque vada :)
Ma ci mancherebbe!  :0
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
I am gray. I stand between the candle and the stars.
We are gray. We stand between the darkness and the light.
    --Delenn, "Babylon Squared"

 
ehmm... premesso che non ho mai usato bloob, ma adesso i valori sono 
diventati tutti tipo: [BLOB - 11 B], [BLOB - 7 B], eccetera...
Che significa? :)

 Che significa? :)
Che phpmyadmin li vede come valori binari, prova a caricare ed accedere ai dati
con la tua applicazione
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
According to the obituary notices, a mean and unimportant person never dies.

 
nulla da fare purtroppo, ancora questi malefici %u

 nulla da fare purtroppo, ancora questi malefici %u
Ha settato il charset di dialogo tra PHP e MySQL appena dopo aver "aperto la
connessione?
Se usi mysqli devi dare questi due comandi (il primo e' ovvio, il secondo e'
quello che serve)
$db = new mysqli($db_host, $db_user, $db_pass, $db_database);
$db->set_charset('UTF8');
Cio' verificato, sei sicuro che l'input nel database (ovvero come i dati entrano
nelle tabelle) sia "sano"?
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Prophecy is a guess that comes true.
When it doesn't, it's a metaphor.
    --Vir Cotto, "The Very Long Night of Londo Mollari"

 
A dire il vero io sono un tipo un po' all'antica :) e uso mysql e non 
mysqli!
Comunque metto il corrispondente mysql_query("set names utf8"), senza 
molto successo...
In realtï¿œ il problema potrebbe essere nel modo in cui inserisco i dati 
nelle tabelle, ma non capisco perchï¿œ...
In realtï¿œ adesso ho due fronti aperti:
1- come recuperare i dati che ho giï¿œ presenti nel db: possibile che non 
ci sia una funzione che mi converta una stringa tipo 'pippo%u2122' nel 
corrispettivo col simbolo del trademark a cui dovrebbe corrispondere la 
sequenza 2122?
2- come far arrivare i nuovi dati correttamente

 2- come far arrivare i nuovi dati correttamente
Un problema alla volta.
Io mi concentrerei sul secondo, per la conversione un metodo lo si trova sempre.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Psychologists think they're experimental psychologists.
Experimental psychologists think they're biologists.
Biologists think they're biochemists.
Biochemists think they're chemists.
Chemists think they're physical chemists.
Physical chemists think they're physicists.
Physicists think they're theoretical physicists.
Theoretical physicists think they're mathematicians.
Mathematicians think they're metamathematicians.
Metamathematicians think they're philosophers.
Philosophers think they're gods.

 
ottimo, concentriamoci sul secondo allora:
lo schema ï¿œ questo: da una pagina esterna mando l'html della pagina sul 
mio server tramite greasemonkey e una chiamata ajax. Nella chiamata 
inserisco l'header
headers:{'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8'}
sito di partenza e mio server sono entrambi codificati con utf8, ma se 
mi limito a dare di ritorno l'echo dell'html questo torna indietro 
'sporco'. Dove sta la falla?
Ciao,
Marco

 C'è un modo per risolvere il tutto?
Puoi esportare/trattare/importare il contenuto?

Andrea D'Amore ha scritto:

certo, per farlo posso farlo, cosa suggerisci?
Marco

 'sporco'. Dove sta la falla?
Purtroppo visto che ci sono di mezzo tanti step devi fare un tracing in ogni
step. Inoltre visto che c'e' di mezzo una codifica di carattere devi essere
mortalmente sicuro che il tracing visualizzi le cose come stanno e non introduca
lui stesso un errore.
A naso, il problema sta nello script GM, ma e' una supposizione. Occhio che
inserendo un header non cambi la codifica di una pagina, ma dici semplicemente
come decodificarla.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
"The Schizophrenic: An Unauthorized Autobiography"

 
Come ti dicevo, ho fatto un test su uno scenario molto semplice:
lato client, pagina codificata in utf8, recupero l'html della pagina in 
una stringa. Se faccio l'alert della stringa la vedo codificata 
regolarmente.
Invio la stringa tramite gm, metodo post, l'header impostato come ti 
dicevo, headers:{'Content-type': 'application/x-www-form-urlencoded; 
charset=UTF-8'}
L'onreadystatechange si limita a fare l'alert di quello che risponde il 
server
Sul server, impostato su utf8, faccio semplicemente l'echo del parametro 
post.
L'alert lato client mi fa vedere la stringa con punti di domanda e 
amenicoli vari...
Non che sia molto esperto di tracing, cosa posso fare per capire dove 
sta l'inghippo?

 sta l'inghippo?
Secondo me GM fa una ricodifica del carattere.
Io uso abitualmente tutta la "filiera" in UTF8 (HTTP server, database, pagine) e
non ho problemi.
Una curiosita': se metti in input una entity HTML (tipo &eacute;) cosa succede?
Il giro alla fine ti lascia un solo carattere con la e accentata oppure te lo
ricodifica?
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Always store beer in a dark place.

 post.
Io non conosco GreaseMonkey ma un conto è specificare un charset, un 
altro è avere delle informazioni che effettivamente lo seguano.
Questa storia del mandare la pagina con l'header dal client non l'ho 
seguita molto bene, il tuo problema è con php? Se crei uno script usando 
UTF8 e gli fai scrivere "aèéìòóù" dichiarando il charset nell'header 
come lo ricevi?
Se a questo punto crei una table con utf8 e ci salvi quello stesso testo 
poi lo leggi e lo stampi come viene fuori?

 altro è avere delle informazioni che effettivamente lo seguano.
My point, exactly: l'header dice come interpretare i dati, non li cambia.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Every interesting program has at least one variable, one branch,
and one loop...
And at least one bug!

 
Ci sono primo problema risolto :)
Sbagliavo perchï¿œ come se volevo mandare la variabile txt via post 
inviavo escape(txt) invece che encodeURIComponent(txt) :)
Adesso devo solo trovare il modo di recuperare tutti i dati che ho giï¿œ 
memorizzato!
Avete un suggerimento?
Intanto un grazie a te e Andrea!!

 inviavo escape(txt) invece che encodeURIComponent(txt) :)
Non ï¿œ italiano ma spero si capisca :)

 Avete un suggerimento?
Probabilmente li puoi ricodificare con qualche funzione di encoding
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Nessun viaggio e` pericoloso per chi saluta dalla riva.