Visualizzazione risultati 1 fino 6 di 6

Discussione: PHP errore visualizzazione caratteri utf8

  1. #1
    goldmanager non è connesso Neofita
    Data registrazione
    07-03-2015
    Messaggi
    6

    Predefinito PHP errore visualizzazione caratteri utf8

    Salve,

    ho un DB con dei testi utf8_general_ci che con il browse phpmyadmin vedo correttamente , quando vengono visualizzati dal mio file php i caratteri "speciali" si perdono generando o null o caratteri ascii non coretti.

    nel mio file php ho impostato :

    mysqli_set_charset($mysqli, "utf8");

    quindi la mia row :

    $name = htmlentities(stripslashes($row['nome']));

    sapresti consigliarmi come risolvere la questione ?

    Grazie

    Codice PHP:
    <?php
    $mysqli
    = new MySQLi("localhost","user","pass","db");
    if(
    $mysqli->connect_error) {
    echo
    'Database connection failed...' . 'Error: ' . $mysqli->connect_errno . ' ' . $mysqli->connect_error;
    exit;
    } else {
    mysqli_set_charset($mysqli, "utf8");
    }
    $query = "SELECT * FROM `nometabella`";
    $result = mysqli_query($mysqli,$query) or die(mysql_error());

    while(
    $row = mysqli_fetch_array($result)){
    $name = htmlentities(stripslashes($row['nome']));
    echo
    $name.'<br/>';
    }

    $mysqli->close();
    ?>

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    La funzione htmlentities interpreta la stringa con la codifica predefinita che varia a seconda dell'installazione, hai provato a specificare esplicitamente la codifica UTF-8? Stai provando su AlterVista o da un'altra parte?

  3. #3
    goldmanager non è connesso Neofita
    Data registrazione
    07-03-2015
    Messaggi
    6

    Predefinito

    Sto provando su Altervista , ho provato ad esplicitare la codifica ma senza risultato..
    htmlentities($name, "UTF-8");

    leggevo che PHP 5.6 lo definisce di default

    In PHP 5.6 onwards, "UTF-8" is the default value and its value is used as the default character encoding for htmlentities(), html_entity_decode() and htmlspecialchars() if the encoding parameter is omitted.
    inoltre avevo definito mysqli_set_charset($mysqli, "utf8");

    non capisco l'errore ...

    ecco il file .. LINK
    Ultima modifica di karl94 : 28-06-2015 alle ore 18.52.49 Motivo: Formattazione

  4. #4
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Citazione Originalmente inviato da goldmanager Visualizza messaggio
    Sto provando su Altervista , ho provato ad esplicitare la codifica ma senza risultato..
    htmlentities($name, "UTF-8");
    Stai sbagliando parametro: il codice corretto è
    Codice PHP:
    htmlentities($tuavariabile, ENT_COMPAT | ENT_HTML401, "UTF-8")
    Citazione Originalmente inviato da goldmanager Visualizza messaggio
    leggevo che PHP 5.6 lo definisce di default
    Su AlterVista la versione di PHP più recente disponibile è attualmente PHP 5.4.
    Citazione Originalmente inviato da goldmanager Visualizza messaggio
    inoltre avevo definito mysqli_set_charset($mysqli, "utf8");
    Quello non c'entra: la stringa la ottieni giusta, poi non riesci a trattarla adeguatamente.
    In generale non è nemmeno necessario convertire il tutto con le apposite entità (la pagina viene anche più grossa), ma è sufficiente specificare la codifica del documento in maniera corretta. Inoltre non capisco perché usi anche stripslashes.

  5. #5
    goldmanager non è connesso Neofita
    Data registrazione
    07-03-2015
    Messaggi
    6

    Predefinito

    Ti ringrazio molto per il tuo aiuto , adesso funziona tutto !

    ho modificato il parametro di htmlentities come da te suggerito , ho inoltre eliminato stripslashes che non era necessario ed adesso il testo viene visualizzato correttamente.

    In generale non è nemmeno necessario convertire il tutto con le apposite entità (la pagina viene anche più grossa), ma è sufficiente specificare la codifica del documento in maniera corretta.
    è una giusta critica , in effetti se uso

    mysqli_set_charset($mysqli, "ISO-8859-1");

    non ho bisogno di definire le entità , ma ero in dubbio se usarlo visto che è lo standart per HTML 4 , mentre utf8 è lo standart per HTML 5 ..

    Grazie per il tuo aiuto !

  6. #6
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Citazione Originalmente inviato da goldmanager Visualizza messaggio
    non ho bisogno di definire le entità , ma ero in dubbio se usarlo visto che è lo standart per HTML 4 , mentre utf8 è lo standart per HTML 5 ..
    In realtà non è così: la codifica la si può specificare sia usando HTML4.01 che con HTML5, e le entità funzionano su entrambi. Più che altro, in passato si usavano più spesso le entità poiché i vari browser avevano vari problemi (implementazioni incorrette e altri bug) con le varie codifiche e quindi l'unica alternativa per non avere tutto rotto era usare le entità.

Regole di scrittura

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