Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [php-mysql] caratteri accentati in db

    Premessa:
    il charset delle pagine è utf8
    il charset del db è utf8-general-ci
    il charset del php è utf8
    i dati che inserisco nel db con tabelle utf-8 passano da uno script javascript, in pratica c'è una chiamata asincrona a uno script php remoto che inserisce i valori
    la prima query ad ogni connessione è mysql_query('set names latin1');


    Fatte queste debite premesse sto impazzendo, se setto la query con utf8 invece di latin le lettere accentate vengono semplicemente troncate. se setto latin1 mi vengono fuori i punti interrogativi, guardo nella tabella con phpmyadmin e vedo caratteri incomprensibili.
    Insomma non so più che fare, aiutatemi.

  2. #2
    Sostituisci i caratteri accentati con quelli XML friendly.
    Ci sono moltissimi post nel forum che parlano di come fare, in alcuni risposi anche con una funzione creata da me.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Ciao, grAZIE DELLA risposta, vorrei usare la tua funzione get_html_translation_table ma ho un dubbio, devo utilizzarla dopo che ho recuperato i dati dal db?

  4. #4
    No. Non ci siamo purtroppo. Il problema è che ho già esplorato il web alla ricerca della soluzione, le ho tentate tutte, ora credo di essere solo molto confuso. Credevo che bastasse impostare tutto a utf8 per risolvere il problema e invece l'ho solo complicato. Ho sempre utilizzato la codifica ISO-8859-1 e mi ero sempre trovato bene, l'unico problema era ajax ma lo risolvevo con la funzione htmlentities.

  5. #5
    Beh... get_html_translation_table non è una mia funzione!
    Ho solo creato una funzione che la utilizza facendo tutta una serie di controlli e sostituzioni per ogni input che viene passato!
    A parte la precisazione, quella funzione va usata a monte: prima dell'inserimento delle stringhe nel DB, dimodoché tutti i testi saranno codificati con caratteri XML friendly, e non avrai più problemi di accentate nel DB.
    Puoi anche usare la stessa funzione per estrarre i dati dal DB, filtrarli e salvarli di nuovo, con una procedura automatica.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #6
    Mi spieghi perché devo trasformare prima di inserirli in un db in entità xml visto che la tabella è utf-8 e il campo della tabella è in utf8-bin?
    Questo è quello che faccio ora:
    Codice PHP:
    $nome  htmlentities(strtolower($_POST['nome'])); 
    nel db mi diventa, ad esempio niccolò= "niccol&atilde;&sup2;"
    quando stampo faccio :
    Codice PHP:
    $nome =   html_entity_decode($row['nome']); 
    ed ottengo il solito punto interrogativo.

  7. #7
    Perché se al posto di è salvi nel DB il suo equivalente & egrave ; sei sicuro che in output, visto che usi UTF8 come charset, non hai problemi di visualizzazione.
    Peraltro, se il tuo codice è xHTML, sei anche sicuro che non hai problemi di validazione dovuti ai testi.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  8. #8
    Scusa ma cosa mi consigli di fare? Mi dice di usare quella funzione prima di mettere i dati nel db e poi mi dici che non va bene?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.