quello che ti ho detto è TUTTO ciò che c'è da sapere sul problema lettere accentate.
quello che ti ho detto è TUTTO ciò che c'è da sapere sul problema lettere accentate.
e perchè non mi funziona!?
"non mi funziona" cosa vuol dire?
- hai controllato nel db come sono salvati?
- hai controllato il sorgente?
- hai applicato htmlentities() alla stringa "incriminata"?
cosa nn funziona!!??
... se lasci un link magari vedo qualcosa...
allora.. spè...nel database che devo controllare?!
io quando immetto i dati nel database per il campo dei commenti ho questo codice
e poi quando devo andare a stampare il commento sulla stringa dell' echo ho fattoCodice PHP:$commento=trim(addslashes(stripslashes($_POST['commento'])));
ti serve sapere altro!?Codice PHP:echo htmlentities($row['commento']) ;
Peccato che sia sbagliatoOriginariamente inviato da oly1982
quello che ti ho detto è TUTTO ciò che c'è da sapere sul problema lettere accentate.
Il punto fondamentale per rappresentare correttamente i caratteri, e' che i charset delle varie parti dell'applicazione coincidano. Se il charset del database, o del file in cui e' scritto il codice HTML e' latin1, allora la codifica della pagina deve essere latin1 (iso-8859-1). Se il charset del database, o del file e' UTF-8, allora la codifica della pagina nel meta tag deve essere UTF-8.
SE i charset sono impostati correttamente, si possono scrivere tutte le lettere accentate che si vuole ed appariranno corrette, senza bisogno di ulteriori trasformazioni.
Usare htmlentities() e' una soluzione impropria, perche' cura i sintomi ma non risolve il problema alla radice. htmlentities() (che contrariamente a quanto dici non c'entra nulla con UTF-8) funziona perche' trasforma tutto in entita' HTML (appunto) che sono rappresentabili tramite il normale charset ASCII 7 bit. Pero' e' una soluzione che aggiunge inutile complessita', quella corretta e' sistemare i charset.
e ma quindi??come risolvo?!?! help :-(
scusa k.b.
io con i dati-stringa presenti nel db se sono finalizzati alla stampa:
- se sono dati provenienti da utenza devo immunizzarli... come fare? io utilizzo htmlentities() al di là dello charset del documento;
- se i dati provengono da input inseriti da me? se si tratta di html (ad esempio generato da un editor di testo tipo tinymce) lo lascio così com'è (tra l'altro tali editor convertono stesso loro i caratteri speciali in entità html)... ma se si tratta di altro che faccio? poniamo che il titolo nella news da me inserita. se questo viene utilizzato anche per l'attributo alt di una img:
quindi anche in questo caso occorrerà htmlentities($titolo, ENT_QUOTES);Codice PHP:[img]banner_news.jpg[/img]" />
Oppure faccio una news dal titolo "Il corretto uso del tag
"... anche in questo caso htlmentities()
Cosa resta? In quali casi non occorre filtrare le stringhe da stampare?
apri con phpmyadmin il DB e guarda le tabelle che charset hanno,
visualizza con il tuo browser che charset ha la tua pagina
scrivi i risultati qua..
non mi sembra tanto difficile![]()
eXvision
nel database sono tutti latin1_swedish_ci
le pagine create da me hanno charset=iso-8859-1
Ma questo e' un altro discorso.Originariamente inviato da oly1982
scusa k.b.
io con i dati-stringa presenti nel db se sono finalizzati alla stampa:
- se sono dati provenienti da utenza devo immunizzarli... come fare? io utilizzo htmlentities() al di là dello charset del documento;
- se i dati provengono da input inseriti da me? se si tratta di html (ad esempio generato da un editor di testo tipo tinymce) lo lascio così com'è (tra l'altro tali editor convertono stesso i caratteri speciali in entità html)... ma se si tratta di altro che faccio? poniamo che il titolo nella news da me inserita. se questo viene utilizzato anche per l'attributo alt di una img:
quindi anche in questo caso occorrerà htmlentities($titolo, ENT_QUOTES);Codice PHP:[img]banner_news.jpg[/img]" />
Oppure faccio una news dal titolo "Il corretto usa del tag
"... anche in questo caso htlmentities()
Cosa resta? In quali casi non occorre filtrare le stringhe da stampare?
Per quanto riguarda l'input degli utenti, se puo' contenere tag HTML allora li accetti (presumibilmente selezionati con strip_tags()), se l'HTML non e' consentito allora li elimini (sempre con strip_tags()).
Se devi stampare dei tag HTML senza che vengano interpretati (come nell'esempio della news) usi htmlspecialchars() sostanzialmente per trasformare i caratteri '<' e '>'.
In tutto questo che c'entrano le vocali accentate?