Visualizzazione risultati 1 fino 3 di 3

Discussione: UTF-8 sul database

  1. #1
    letturasibillaindovina non è connesso Utente giovane
    Data registrazione
    17-11-2012
    Messaggi
    45

    Red face UTF-8 sul database

    Ciao a tutti, volevo chiedere delle informazioni circa l'UTF-8 lato server e nello specifico nel database di phpadmin. Ultimamente, lavorando in locale con easyphp, mi sono accorto che i dati di una campo, inseriti tramite un form, mi vengono salvati si sul database ma con le accentate "strane" per capirci.

    Ora fatto tutti i controlli su internet per cercare soluzioni, ho provveduto a utilizzare la stringa:

    Codice PHP:
    SHOW VARIABLES LIKE 'character\_set\_%';
    (permette di vedere le impostazioni del set di caratteri)

    questo è il risultato:

    Variable_name
    Value
    character_set_client : utf8
    character_set_connection : utf8
    character_set_database : utf8
    character_set_filesystem : binary
    character_set_results : utf8
    character_set_server : latin1
    character_set_system : utf8
    Mi chiedo se il character_set_server e il character_set_filesystem incidano più di tanto.

    Allora sulla pagina che uso come aggiornamento dati le parole si vedono bene, il problema è solo nel database che sembra non codificare in utf-8 i dati immessi attraverso il form.
    Sulla mia pagina lato php ho:
    Codice PHP:
    <?php mb_http_input("UTF-8");
    mb_http_output("UTF-8");?>
    poi lato html:
    Codice HTML:
    <meta charset="utf-8">
    la tabella nel database è codificata:
    Codice PHP:
    utf8-bin
    (ho provato anche con utf8-general_ci, utf8_unicode_ci ma niente lo stesso)

    Qualcuno mi può indicare dove sbaglio? O per lo meno come ovviare a questo inconveniente? Grazie!

  2. #2
    quacisiamonoi non è connesso Neofita
    Data registrazione
    16-02-2013
    Messaggi
    8

    Predefinito

    Devi usare la stringa: htmlspecialchars

    http://www.w3schools.com/php/func_st...ecialchars.asp

    Ti faccio un esempio pratico:

    $var1 = htmlspecialchars($_POST['var1']);
    $var2 = htmlspecialchars($_POST['var2']);

  3. #3
    letturasibillaindovina non è connesso Utente giovane
    Data registrazione
    17-11-2012
    Messaggi
    45

    Predefinito

    Grazie per la risposta, nel fratempo ho utilizzato questa soluzione, e la indico qui per chi come me potrebbe fare la stessa domanda e non trovare risposte esaurienti.
    Ho messo nello script subito dopo l'apertura di connessione questa stringa: "mysql_set_charset("utf8");"

    ecco un esempio di come inserirla-
    Codice PHP:
    <?php
    $link
    = mysql_connect($DB_host, $DB_user, $DB_password);
    if (!
    $link) {
    die (
    'Non riesco a connettermi: ' . mysql_error());
    }

    $db_selected = mysql_select_db($DB_name, $link);
    if (!
    $db_selected) {
    die (
    "Errore nella selezione del database: " . mysql_error());
    }
    mysql_set_charset("utf8");
    ?>
    A me funziona e i dati inseriti nel database risultano essere corretti visivamente, ovviamente la codifica della tabella e del database per quanto riguarda il charset devono essere anch'essi UTF-8.

    Questa è la mia esperienza, rimango in attesa di eventuali deluidazioni, critiche e eventuali modifiche a ciò che ho scritto, sempre per l'aiuto del prossimo.


Tags for this Thread

Regole di scrittura

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