Visualizzazione risultati 1 fino 11 di 11
Like Tree1Likes
  • 1 Post By alemoppo

Discussione: Problemi json_encode di php su codifica UTF-8 DB

  1. #1
    Guest

    Predefinito Problemi json_encode di php su codifica UTF-8 DB

    Salve a tutti,
    ho importato un file tramite il mio pannello altervista, il problema è che quando faccio le query e voglio far ritornare il dataset in json_encode, ottengo false, l'errore preciso è:
    Malformed UTF-8 characters, possibly incorrectly encoded
    sul vecchio server funzionava, la chiamata PDO ha 'charset=UTF8', ma su questo server non ne vuole saper

    Grazie

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Purtroppo altervista non supporta quel costrutto nel PDO.. devi usare la libreria mysqli* mysqli_set_charset e una query con SET NAMES utf8.
    se non usi mysqli_set_charset php non tratta il testo come utf-8 (ad esempio le limitazioni o ricerche saranno sempre per byte e non per più byte).
    Ultima modifica di darbula : 15-05-2019 alle ore 13.47.40

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

    Predefinito

    Io non ottengo particolari problemi con PDO+JSON. L'errore lo ottieni lato PHP quando tenti di invocare la json_encode()?

    Prova impostando:
    Codice PHP:
    $db->query('SET CHARACTER SET utf8');
    http://forum.it.altervista.org/php-m...-con-utf8.html

    Ciao!
    Ultima modifica di alemoppo : 15-05-2019 alle ore 18.25.06
    lucanic likes this.

  4. #4
    Guest

    Predefinito

    Si esatto, le query le fa bene, funziona ed ho l'array dei risultati, ma poi nel json_encode ottengo false

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

    Predefinito

    Dal messaggio di errore sembra comunque leggere male i dati; hai provato ad eseguire, dopo la connessione al db, la query che ti ho indicato?

    Ciao!

  6. #6
    Guest

    Predefinito

    Si ho provato ma niente! :( :(

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

    Predefinito

    Devi fare debug dei dati che leggi, prova con altri dati e vedi se hai lo stesso problema.

    Ciao!

  8. #8
    Guest

    Predefinito

    Da quello che ho potuto vedere, ho problemi ovunque compaia un accento, ma l'applicazione ha tantissime chiamate e queries, quindi sarebbe complesso andare a codificare la singola colonna (es: nome) in ogni parte

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

    Predefinito

    Ma se risolvi una volta (ad esempio la query che ti ho proposto è da fare alla connessione), poi risolvi ovunque.

    Senza fare debug sarà molto difficile risolvere.

    Ciao!

  10. #10
    Guest

    Predefinito

    Scusami, tu dici cosi:

    <?php
    try {
    $cdb = new PDO("mysql:host=localhost;dbname=***;charset=UTF8" ,"****","***");
    $cdb->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $cdb->query('SET CHARACTER SET utf8');
    }catch (PDOException $e) {
    print_r($e);
    echo 'Connection failed: ' . $e->getMessage();
    }
    ?>
    Ultima modifica di lucanic : 21-05-2019 alle ore 17.33.27

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

    Predefinito

    Sì, ma i dati nel database devono già essere in formato utf8, altrimenti li leggerai male.

    Prova anche a stampare i dati (se contengono accenti noterai se sono ben formattati). L'unico modo è fare del debug e delle prove.

    Ciao!

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
  •