Visualizzazione risultati 1 fino 18 di 18

Discussione: Lettere accentate e simili

  1. #1
    Guest

    Predefinito Lettere accentate e simili

    Ho un problema con questi caratteri. Il mio utente li inserisce in un form, poi la pagina successiva li immagazzina in un database. Solo che quando sono lì dentro, scopro che in realtà i caratteri come è, ì, ò sono trasformati in è, ì. Come fare per evitarlo? Possibilmente senza ricorrere a str_replace() con PHP.

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    utf-8 vs latin-1 - dipende dall'encoding della pagina in cui inserisci i dati, da come li gestisci nel php, e dall'encoding della pagina che li mostra. Dovresti poter risolvere senza str_replace perché, in teoria, puoi lasciare le lettere accentate senza trasformare in &qualcosa;.

    Tutto gira attorno a <meta http-equiv="Content-Type" content=" ... " />

    edit: se vuoi fare delle prove, puoi usare questa pagina.

  3. #3
    Guest

    Predefinito

    Credo di aver capito. Devo cambiare insomma nella head della pagina
    <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
    in
    <meta content="text/html; charset=utf-8" http-equiv="content-type">
    giusto?
    E magari devo fare la stessa cosa nel database, dove la collaction dev'essere utf8_bin.

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    mmh in effetti per le lettere accentate basta l'8859-1, ma devi controllare che sia lo stesso usato dal db, e che non venga tocchignato in modo strano dal php di mezzo. Poi è probabile che se metti tutto utf-8 funzioni cmq, eh

  5. #5
    Guest

    Predefinito

    In sostanza l'importante è che la codifica rimanga sempre la stessa, no?
    Ma spiegami una cosa: il mio utente inserisce del testo in un iFrame editabile o in una textarea; il tipo di codifica non dipende dal suo browser, più che dalla codifica della mia pagina? Oppure il browser inserisce i caratteri a dipendenza della codifica?

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    solitamente i browser sono settati su automatico/universale, cioé si adattano o alla codifica passatagli dal server o dall'html. Ovvio che io potrei fissare il mio browser su "aramaico antico" e quelli sono i simboli che ti becchi

    purtroppo non sono ferratissimo sull'argomento codifiche, e non so' dirti qual'è la soluzione corretta finale il mondo occidentale mi sembra viva tutto su ISO-8859-1, quindi con quello dovresti essere a posto

    edit: mi ero svanito: si, la codifica deve rimanere la stessa, così che una å resti una å!

  7. #7
    Guest

    Predefinito

    Già. Però in fin dei conti... Io vado con phpmyadmin nella tabella che mi interessa, seleziono i campi che voglio e per questi campi devo settare la Collation a... a che cosa? Predefinito c'è il gruppo latin1; io devo mettere ascii? Devo mettere utf8? Sulle pagine invece lascio l'ISO-8859-1, giusto?

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    latin1 dovrebbe andare bene controlla magari che nella pagina, o l'iframe dove l'utente inserisce i dati si specificato 8859 - che magari per qualche motivo il browser va in automatico e sceglie utf-8. Se hai provato la mia pagina di test, vedrai che le Ãqualcosa escono se la pagina che invia è in utf-8 e quella che riceve latin1/8859

  9. #9
    Guest

    Predefinito

    Io ho fatto così: quando imposto il mio iFrame, invece di scrivere solo
    Codice HTML:
    <HTML>
    <BODY MONOSPACE="true" STYLE="font:10pt arial,sans-serif">Scrivi qui il testo.</BODY>
    </HTML>
    scrivo:
    Codice HTML:
    <HTML>
    <HEAD>
    <META http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    </HEAD>
    <BODY MONOSPACE="true" STYLE="font:10pt arial,sans-serif">Scrivi qui il testo.</BODY>
    </HTML>
    Quindi in teoria dovrebbe funzionare. Ma non funziona ancora. Che cos'altro devo fare?

    EDIT: posso specificare <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> e cambiare il charset anche nel database in utf-8? Sarebbe una soluzione?
    Ultima modifica di lilu1 : 07-03-2007 alle ore 17.54.55

  10. #10
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    nel database, vedi il testo giusto o sconvolto ?

  11. #11
    Guest

    Predefinito

    Nel database vedo il testo sconvolto, con quei segni strani. Tra l'altro ho controllato sul sorgente di phpMyAdmin è mi sono reso conto che nella head è presente questo:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    Io ora provo come avevo detto: metto nelle mie pagine di inserimento dati e di ricezione <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> e cambio il charset del campo testo nel database in utf8. Poi riferirò che cosa accade.

    Non so quanto serva, ma sulla prima pagina di phpMyAdmin vedo questa scritta:
    Set di caratteri MySQL: UTF-8 Unicode (utf8).

  12. #12
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Prova a leggere questa discussione.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  13. #13
    Guest

    Predefinito

    Grazie mille, funcool!
    Io ho provato a fare come ho detto, cioè cambiando il charset della pagina in utf8 e... tutto è andato a posto. Cioè: le pagine visualizzano correttamente le lettere accentate e simili. Però preferirei ottenere un altro metodo, e quello che ho letto nel topic farebbe al caso mio. Anche se, in realtà mi sembra di aver capito che il problema è questo: il database immagazzina i dati in utf, poi, quando li passa alle pagine, appaiono i simboli cattivi. Cambiare il charset del database sarebbe perfetto, no? Se provassi a mettere latin2 invece di latin1? Mi sembra di aver letto da qualche parte che è quello ciò che fa al caso mio.

    EDIT: sono andato nella pagina server_collations.php?token=45f7d9fe862166e6b7afcd fb41bd17eb di phpMyAdmin, e ho letto che latin1 equivale a cp1252 West European, mentre latin2 a ISO 8859-2 Central European. Può servire?
    Ultima modifica di lilu1 : 10-03-2007 alle ore 13.18.54

  14. #14
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  15. #15
    Guest

    Predefinito

    No no, non uso alcuna funzione utf-encode o decode. Credo che il problema sia questo dialogo con il database.

  16. #16
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Il fatto è che devi utilizzare la utf8_decode.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  17. #17
    Guest

    Predefinito

    No, le cose non vanno ancora bene.
    Non capisco... Ora faccio agire la funzione utf8_decode() prima di inserire il testo nel database. E fin qui tutto bene, sono anche andato a vedere con phpMyAdmin e nel database c'è il testo inserito per bene, senza segni strani.
    Ora, però, alcune pagine visualizzano correttamente il testo preso dal db, altre no. Non capisco da che cosa dipenda.

  18. #18
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Prova a utilizzare quella funzione anche quando stampi il testo.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •