Visualizzazione risultati 1 fino 5 di 5

Discussione: converti dal charset originale latin_1 a utf-8

  1. #1
    Guest

    Predefinito converti dal charset originale latin_1 a utf-8

    salve a tutti ho un problema non da poco che non riesco a risolvere in un database che ho devo prelevare la colonna 'descrizioni' il problema è che il charset è settato su latin1_swedish_ci, ho pensato di risolvere con mysqli_set_charset($conn, "latin1"), ma pultroppo non funziona.

    guadando in rete ho provato anche a cavarmela cosi
    Codice PHP:
    iconv(mb_detect_encoding($description), "UTF-8", $description);
    ma inutilmente e quindi non mi rimane che chiedere aiuto.

    Di seguito vi posto un "riassunto del mio script ridotto all'osso":

    Codice PHP:
    <?php

    // rendo gli errori visibili
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL | E_STRICT);

    // mi connetto al db
    $conn = mysqli_connect('localhost', 'root','', 'test');
    if (
    $conn->connect_error) {
    die(
    'Errore di connessione (' . $conn->connect_errno . ') '
    . $conn->connect_error);
    }
    //imposto il charset : se inserisco latin_1 mi da errore
    mysqli_set_charset($conn, "latin1");

    $output = '';
    //eseguo una query prendo i risultati e li stampo nella pagina html che a il charset utf-8
    $sql = $conn->query("SELECT * FROM `apps_item` WHERE app_id = 3;");
    if(
    mysqli_num_rows($sql) > 0){
    while (
    $row = mysqli_fetch_array($sql)){
    $description = $row['description'];
    $output .= '<p>'.$description.'</p>';
    }
    }

    ?>

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>sostituisci testi</title>
    </head>
    <body>

    <?php echo $output; ?>

    </body>
    </html>
    Grazie dell'aiuto e del vostro tempo.

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,253

    Predefinito

    Ma come mai non setti utf8 anche nel database così da non avere problemi? Non credo sia una buona scelta utilizzare charset differenti per lo stesso progetto.

    In ogni caso, visto che stai utilizzando le funzioni ad oggetti ( classe->metodo ), non puoi usare la mysqli_set_charset che è procedural; dovresti usare il metodo set_charset.

    Per l'utf-8 (visto che utilizzi questo nella pagina html) sarà una cosa come:
    Codice PHP:
    $conn->set_charset("utf8");
    Ciao!

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    In ogni caso, visto che stai utilizzando le funzioni ad oggetti ( classe->metodo ), non puoi usare la mysqli_set_charset che è procedural; dovresti usare il metodo set_charset.
    Grazie della risposta, tu cosa mi consigli ad oggetti o procedural, io opterei per oggetti ma mi farebbe piacere ricevere un tuo parere grazie.

    Saluti e buona giornata

  4. #4
    Data registrazione
    14-03-2014
    Messaggi
    3

    Predefinito

    Sicuramente ad Oggetti.
    PHP ormai è passato da ANNI ad essere OOP e conviene altamente usarlo, visto che comunque si crea un codice più pulito e mantenibile.

  5. #5
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Credo che alcune precisazioni siano doverose.

    PHP non è "passato ad essere OOP", piuttosto ha integrato molte caratteristiche della programmazione orientata agli oggetti, ed ha introdotto i concetti di classe, polimorfismo, sottotipo, eccetera.

    PHP non è un linguaggio orientato agli oggetti puro, ad esempio gli array non seguono l'approccio ad oggetti (non hanno metodi, bensì funzioni globali per manipolarli). PHP è dunque un linguaggio ibrido e l'utilizzo di mysqli procedurale è del tutto lecito, soprattutto se all'interno di un progetto preesistente che non segue un approccio ad oggetti.

    In generale la programmazione ad oggetti non rende un "codice più pulito e mantenibile": questo risultato è invece frutto di un processo di astrazione applicabile tanto alla programmazione ad oggetti quanto a quella procedurale, così come agli altri paradigmi. Tanto per fare un (contro) esempio, il codice scritto in linguaggi funzionali non ad oggetti come Haskell tende ad essere molto più chiaro, conciso e mantenibile dello stesso scritto in linguaggi fortemente orientati agli oggetti come Java.

    Va piuttosto detto che l'approccio ad oggetti, al momento, è il più comune ed utilizzato: in caso di dubbi è certamente la strada "standard" da seguire.

Regole di scrittura

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