Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344

    Inserito dati su tabella con caratteri UTF8

    Ciao

    ho utilizzato come codifica la UTF-GENERAL_CI in un tabella.
    Se vado ad inserire manualmente nella tabella ad esempio il campo "maternità" con l'accento quando lo vado a visualizzare da PHP caricandolo, viene visualizzato un carattere strano (punto di domanda su fondo nero).
    Devo inserire nel database il relativo codice à al posto della à per ottenere il risultato corretto?

    Per inserire invece automaticamente quando faccio un INSERT INTO o UPDATE sul MySQL devo utilizzare la funzione htmlspecialchars o htmlentities?

    grazie

  2. #2
    quando la vai a visualizzare devi assicurarti che sia l'header content-type che il meta tag della pagina html sia settato ad utf

  3. #3
    Ciao,

    come da regolamento va specificato il nome della piattaforma utilizzata (in questo caso mysql).

    Per questa volta sistemo io, ma per le prossime più attenzione.

    Il problema comunque è relativo più a php che a mysql ... ps: dopo che ti connetti devi lanciare una query tipo SET NAMES 'utf-8' per forzare il charset della connessione


    Grazie
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Grazie e scusa per il titolo.

    Ho risolto il problema settando la connessione:

    mysql_query("SET NAMES 'utf8'"); // Per versioni di MySQL < 5.2

    Di fatto invece settare l'header della pagina PHP in questo modo:

    header('Content-type: text/html;charset=utf-8');

    Non sortisce alcun effetto.

    Grazie

  5. #5
    ti assicuro ... è fondamentale specificare al browser quale charset deve utilizzare

    ovviamente potrebbe non aver sortito alcun effetto perché magari era presente un tag meta che effettuava la stessa operazione
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  6. #6
    Originariamente inviato da daniele_dll
    ti assicuro ... è fondamentale specificare al browser quale charset deve utilizzare

    ovviamente potrebbe non aver sortito alcun effetto perché magari era presente un tag meta che effettuava la stessa operazione
    oppure perchè quell'header era già inviato dal web server

    prova ad eliminare quella riga di codice header( e a controllare gli header inviati di default con questo sito per esempio: http://www.seoconsultants.com/tools/headers

    considera che se non è presente nessun header content-type il browser utilizza il meta tag nella pagine

  7. #7
    Originariamente inviato da xnavigator
    oppure perchè quell'header era già inviato dal web server

    prova ad eliminare quella riga di codice header( e a controllare gli header inviati di default con questo sito per esempio: http://www.seoconsultants.com/tools/headers

    considera che se non è presente nessun header content-type il browser utilizza il meta tag nella pagine
    set name e header sono due cose differenti.

    Giustamente come affermato da daniele set names provvede a definire il character set da utilizzare nella connessione client <-> server cioe' tra php e mysql. Se questo e' errato i caratteri multibyte inviati da mysql settato come utf8 non vengono capiti dal client settato latin1 (single byte).
    Dopo che i caratteri sono stati ricevuti ed erroneamente tradotti (corrotti) puoi settare cio' che ti pare come header, saranno sempre caratteri corrotti.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Originariamente inviato da piero.mac
    set name e header sono due cose differenti.

    Giustamente come affermato da daniele set names provvede a definire il character set da utilizzare nella connessione client <-> server cioe' tra php e mysql. Se questo e' errato i caratteri multibyte inviati da mysql settato come utf8 non vengono capiti dal client settato latin1 (single byte).
    Dopo che i caratteri sono stati ricevuti ed erroneamente tradotti (corrotti) puoi settare cio' che ti pare come header, saranno sempre caratteri corrotti.

    si ma se i caratteri non sono corrotti e setti un charset errato nel browser lo stesso li vedi male, quindi bisogna stare attenti anche a quello

    =/

  9. #9
    se imposti il db su utf8, la connessione con mysql su utf8 ed infine imposti il charset della pagina su utf8 direi che rischio di ritrovarsi con i dati corrotti non c'è
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Come giustamente detto da voi (riepilogo):

    1) settare il database su UTF-8;
    2) settare il collegamento a UTF-8 (con SET NAMES);
    3) settare l'UTF-8 in PHP

    Per l'ultimo punto io avevo messo solo il meta tag e già funzionava (perchè come detto da xnavigator l'header non era presente per cui utilizzava quello).
    Per togliere ogni dubbio ho aggiunto anche l'header lasciando il meta tag e tutto funziona correttamente.

    Grazie

    RISOLTO

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 © 2026 vBulletin Solutions, Inc. All rights reserved.