Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    ancora caratteri speciali

    So che questo argomento è stato trattato centinaia di volte e prima di aprire il thread ho cercato info a riguardo.
    Il problema è questo:
    pagina php di immissione dati, codifica della pagina php:
    header('Content-type: text/html;charset=utf-8').
    prima di scrivere su mysql passo il campo alla funzione mysql_real_escape_string.
    sulla tabella mi trovo i caratteri sbagliati e per la precisione da "com'è" viene inserito "com'è".
    In cosa sbaglio?
    ho provato a togliere utf-8 dalla pagina, ad aggiungerlo al campo di tabella....niente da fare.

    Grazie a tutti per l'aiuto.

  2. #2
    Prima di inserire i dati nella tabella mysql usa funzione utf8_decode();
    Codice PHP:
    $da_inserire utf8_decode($da_inserire);

    // query per inserire $da_inserire... 

  3. #3
    Funziona alla perfezione!!!
    Grazie mille!!
    avevo anche provato dopo la connessione al db ad eseguire la query "SET CHARACTER SET utf8" e l'inserimento funzionava, ma quando andavo a leggere mi visualizzava in modo errato, come se questa query andasse bene solo in fase di inserimento o aggiornamento ma non in faase di lettura.
    è possibile?
    grazie ancora!
    Stefi


    Originariamente inviato da dreamer86
    Prima di inserire i dati nella tabella mysql usa funzione utf8_decode();
    Codice PHP:
    $da_inserire utf8_decode($da_inserire);

    // query per inserire $da_inserire... 

  4. #4
    dunque si comporta in modo un po' strano.
    Vediamo se ho capito il funzionamento o se sto facendo qualcosa di sbagliato.

    la pagina php inizia con header utf-8.
    quando inserisco o aggiorno il dato nella tabella mysql passo prima il campo alla funzione utf8_decode(mysql_real_escape_string($dato), $db) in modo da decodificare in utf e sostituire eventuali apici in formato mysql.

    ok, nella tabella è inserito correttamente.
    Ora visualizzo i dati nella pagina con htmlentities, e fin qui tutto a posto.

    ad un certo punto esguo una funzione di ricerca di un dato. quindi select sulla tabella mysql passando prima la funzione come sopra utf8_decode e mysql_real_escape.
    Se il dato lo trova tutto a posto, altrimenti se non trova nulla rimando la pagina con un msg di "non trovato" e riempio di nuovo i campi con i $_POST dei campi digitati. Qui viene il bello, perché se riutilizzo come prima solo htmlentities, i campi accentati me li fa vedere con i caratteri sbagliati, se invece aggiungo di nuovo la funzione utf8_decode me li fa vedere bene.

    E' normale? non c'è un modo meno macchinoso per gestire i caratteri speciali?

  5. #5
    nessuno che risponda alla mia ultima domanda?
    grazie

  6. #6
    Utente di HTML.it L'avatar di slyper
    Registrato dal
    Jul 2011
    Messaggi
    61
    ho affrontato un analogo problema é trovato la soluzione.puoi visualizzarlo se vai alla data del 23.10.2011 da slyper..

  7. #7
    Originariamente inviato da slyper
    ho affrontato un analogo problema é trovato la soluzione.puoi visualizzarlo se vai alla data del 23.10.2011 da slyper..
    grazie, nel tuo thread hai inserito un link dove spiega perfettamente il flusso.

    riassumo per chi serve:

    innanzitutto il file php deve essere salvato in utf-8 senza BOM;
    il DB deve essere creato in UTF8;
    in scrittura o lettura sul db utilizzo la funzione mysql_real_escape_string($stringa) per convertire eventuali apici con \';
    quando riempio la form non utilizzo alcuna funzione htmlentities o specialchars perché la stringa viene decodificata automaticamente in modo corretto.

    Grazie a tutti per l'aiuto!
    Stefi

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.