bene, i charset dovrebbero essere ok,
in quali casi ottieni questo problema?
- recupero dati da db
- ajax
- sempre
- ecc
??
bene, i charset dovrebbero essere ok,
in quali casi ottieni questo problema?
- recupero dati da db
- ajax
- sempre
- ecc
??
eXvision
io in pratica inserisco i commenti dal php al database! quando vado a mostrare i dati contenuti nel database sul mio sito mi compaiono tutti strani!! ajax non lo tocco proprio...per ora non lo conosco proprio
Da phpmyadmin le lettere le vedi correttamente? O sono sbagliate anche li'?
effettivamente so sbagliate anche lì
Allora e' possibile che la pagina da cui inserisci i valori abbia un charset sbagliato.
bhè e con
[img]banner_news.jpg[/img]" />
con htmlspecialchar() gli apici e le virgolette come sono trattate?
-----------------
strip_tags() è una funzione che non mi è mai piaciuta dato che la vedo troppo radicale...
htmlspecialchars() non la uso quasi mai preferendo ad essa htmlentities() (anche in virtù che spesso mi serve per immunizzare apici e virgolette... ad esempio per inserire valori in un form destinato all'update...).
Forse sbaglierò ma io personalmente con htmlentites() per le stringhe destinate alla stampa mi trovo bene e soprattutto non capisco le controindicazioni al suo uso
quindi basta cambiarlo e metterlo uguale a tutti gli altri§?1?! chiaramente però le cose già scritte nei database rimangono quelle giusto?coi caratteri strani intendo... però se metto roba nuova dovrebbe andare bene..
k.bOriginariamente inviato da k.b
Allora e' possibile che la pagina da cui inserisci i valori abbia un charset sbagliato.
scusami ancora...
ma se io uso mysql_real_escape_string con il secondo parametro l'handle della connessione non mi converte i caratteri secondo lo charset del db? (utilizzando latin1 nn sono sicuro di questa cosa...)
Il mio primo commento è stato:
Originariamente inviato da oly1982
Il problema può essere affrontato:
- sul lato db cioè lo charset di caratteri ammessi nel db;
(...)
Per verificare che il carattere accentato sia salvato correttamente nel db puoi farre una verifica diretta tramite phpmyadmin. Generalmente impostando lo charset del db su latin1 dovresti salvare correttamente tutti i caratteri (io addirittura con tale charset ho inserito nel db anche caratteri arabi e cinesi senza problemi...).
Come dice il manuale, htmlspecialchars() trasforma i seguenti caratteri:Originariamente inviato da oly1982
bhè e con
[img]banner_news.jpg[/img]" />
con htmlspecialchar() gli apici e le virgolette come sono trattate?
-----------------
strip_tags() è una funzione che non mi è mai piaciuta dato che la vedo troppo radicale...
htmlspecialchars() non la uso quasi mai preferendo ad essa htmlentities() (anche in virtù che spesso mi serve per immunizzare apici e virgolette... ad esempio per inserire valori in un form destinato all'update...).
Forse sbaglierò ma io personalmente con htmlentites() per le stringhe destinate alla stampa mi trovo bene e soprattutto non capisco le controindicazioni al suo uso
&
<
>
'
"
quindi per quanto riguarda tag e virgolette non ci sono problemi.
strip_tags() ha un utilizzo specifico, non e' troppo drastica in se', dipende da cosa devi fare. Ci sono casi in cui magari vuoi permettere l'input di ALCUNI tag (magari strong e em, giusto per un minimo di formattazione) ed eliminare tutti gli altri. In quel caso ti serve strip_tags(), non puoi selezionare i tag con htmlspecialchars() o htmlentities().
Per quanto riguarda htmlentities() contro htmlspecialchars() forse preferisci la prima perche' non sai cosa fa la seconda
Comunque non e' che htmlentities() in se' ha delle controindicazioni, solo che va usata quando davvero serve (magari codificare dati per essere trasferiti tramite protocolli che supportano solo 7 bit? boh casi del genere). Per stampare correttamente testo internazionale la soluzione migliore e' usare UTF8, che e' una codifica che permette di rappresentare ogni code point dell'intero set Unicode. htmlentities() usata solo per le accentate e' una soluzione che all'atto pratico funziona, ma e' concettualmente sbagliata perche' ti costringe ad eseguire un'operazione ogni volta che devi stampare del testo, il che e' superfluo visto che puoi farlo direttamente aggiustando il charset. E' un po' come usare l'output buffering per risolvere "HEADERS ALREADY SENT", e' una pezza ma dimostra che non hai capito la fonte del problema.