Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    150

    Lettere accentuate sostituite con "?". Perchè?

    Salve,
    mi sono accorto che inserendo delle descrizioni di siti all' interno di un database mysql tramite form, le lettere accentuate tipo ì , è ... mi vengono sostituite con dei "?".

    Qualcuno mi sa dire se dipende dal fatto che utilizzo le funzioni trim e addslashes per "controllare" il campo del form "descrizione" nel seguente modo:

    $desc = trim(addslashes($_POST['descrizione']));

    ???

    Oppure può dipendere dalla struttura del database che è la seguente:

    CREATE TABLE siti (
    id int(11) NOT NULL auto_increment,
    bla bla bla
    descrizionesito text ,
    bla bla bla
    bla bla bla
    PRIMARY KEY (id)
    ) TYPE=MyISAM;

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    la discussione è diversa ma la problematica è la stessa:

    http://forum.html.it/forum/showthrea...readid=1119463

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    260
    devi solo sostiture le parole accentate con le loro entità:
    esempio:
    ì la sostiuisci con "&igrave," (PS: sostituisci "," con ";")
    à con "&agrave,"
    --e così via.....

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    150
    Come ?

    Se ad esempio devo scrivere così , nel campo del form inserisco cos&igrave ?


    Io lo posso pure fare, ma se è un utente che deve compilare il form ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    260
    fai un controllo nella pagina dove è stata inviato il form, e sostituisci dinamicamente tutte le entità

    es:
    $stringa= "perciò"
    $conversione = str_replace("ò", "&ograve", "$stringa");

    print "$conversione";


  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da trust
    fai un controllo nella pagina dove è stata inviato il form, e sostituisci dinamicamente tutte le entità

    es:
    $stringa= "perciò"
    $conversione = str_replace("ò", "&ograve", "$stringa");

    print "$conversione";

    Per sostituire le entita basta usare la funzione htmlentities, ma è un po' un palliativo, se sistemi il carachter encoding non hai + problemi.

    ciao

  7. #7
    Utente di HTML.it L'avatar di P75
    Registrato dal
    Jul 2001
    Messaggi
    41
    A me sinceramente non sembra una buona soluzione perché in seguito - o in linea di massima - quei dati potrebbero essere necessari ad aplicazioni che non usano html per rappresentare i contenuti.

    Mettete anche solo una conversione in formato PDF...

    Probabilmente greystone dovresti controllare quale collation è impostata sul database ed adeguarla a quello di cui necessiti.
    Ora non ricordo bene, ma mi pare che utf8_general dovrebbe funzionare anche con gli accenti. (Forse c'era una pillola su questo argomento).

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    150
    Se ho capito bene, se allora faccio così:
    Codice PHP:
    <?
    $descrizione 
    trim(addslashes($_POST['descrizione']));

    $descrizione str_replace("à""&agrave""$descrizione");
    $descrizione str_replace("è""&egrave""$descrizione");
    $descrizione str_replace("ì""&igrave""$descrizione");


    print 
    "$descrizione";

    ?>
    alla fine nella variabile $descrizione mi trovo sostituiti le eventuali lettere accentuate à è ed ì con le loro entità e non ho più problemi, giusto ?


    Per p75, mi chiedi un pò troppo , non so cosa significa collation o al max la posso intuire. ad esempio, alla fine di ogni struttura del database, metto TYPE=MyISAM; ma mica lo so cosa significa...

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    62
    nella pagina in cui invii i dati (il form), quando setti le variabili prova a settare:

    codice:
    $descrizione=htmlentities($_POST['descrizione']);
    lo str_replace usalo per gli apostrofi e le virgolette che ti prende se copincolli da word.

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    vabbè ragazzi, come al solito ci sono 2 modi per fare le cose:

    1. male
    2. bene

    a parte P75 credo che nessuno abbia capito il motivo percui viene sconsigliato questo metodo.

    p.s.

    lo sforzo impiegato per imparare a fare male una cosa è lo stesso impiegato a imparare a farla bene.

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.