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
    lucanic non  connesso Neofita
    Data registrazione
    29-12-2014
    Messaggi
    5

    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
    Data registrazione
    24-04-2011
    Messaggi
    2,034

    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 14.47.40

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

    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'); 
    Problema PDO con utf8

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

  4. #4
    lucanic non  connesso Neofita
    Data registrazione
    29-12-2014
    Messaggi
    5

    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
    17,752

    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
    lucanic non  connesso Neofita
    Data registrazione
    29-12-2014
    Messaggi
    5

    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
    17,752

    Predefinito

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

    Ciao!

  8. #8
    lucanic non  connesso Neofita
    Data registrazione
    29-12-2014
    Messaggi
    5

    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
    17,752

    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
    lucanic non  connesso Neofita
    Data registrazione
    29-12-2014
    Messaggi
    5

    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 18.33.27

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

    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
  •