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

    problema accenti - mysql

    Ciao a tutti ho un db myslq InnoDB
    la collation usata è utf8_general_ci , sia per il DB, che per i relativi campi varchar

    ho 2 tabelle

    A. tbl i comuni, che ho inserito tramite phpmyadmin con un import da csv usando però iso 8859-1 e non UTF8 (perché se no non prendeva gli accenti e non so ancora il perchè...)

    - su DB il record mi viene mostrato in questo modo: "Roveredo di Guà"
    - se faccio una select e visualizzo sulla pagina mi mostra "Roveredo di Guà" (corretto)

    B. tbl servizi, in cui ho inserito una serie di record a mano tramite phpmyadmin

    - su DB il record mi viene mostrato in questo modo: "elettricità"
    - se faccio una select e visualizzo sulla pagina mi mostra "elettricit�" (sbagliato)

    la pagina di visualizzazione è la stessa per entrambi i dati...
    e contiene
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="it">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

    è creata con dreamweaver che utilizza come codifica predefinita delle pagine Unicode(UTF-8)



    Vorrei capire come mai e soprattutto come poter risolvere.

    Vorrei riuscire a modificare i dati su DB in modo che si presentino come nella tbl comuni.. e non richiedono quindi successivamente l'utilizzo di htmlentities e simili...

    Avrei già provato a fare un update/sovrascrizione dei dati in questo modo

    codice:
    $value = htmlentities($row['servizio']);
    $query_upd = "UPDATE `tbl_serviziimmo` SET `servizio`= '".$value."' WHERE `idtbl_serviziimmo` = 1";
    e il risultato è ovviamente il seguente:

    - su DB il record mi viene mostrato in questo modo: "elettricit&agrave;"
    - se faccio una select e visualizzo sulla pagina mi mostra "elettricità" (corretto)

    MA non è quel che vorrei... una conversione di questo tipo potrebbe portarmi problemi e dover gestire altre cose, ad esempio se nel campo avessi del codice html.

    Come posso inserire il campo in modo "normale"... senza fare conversioni...?


    Spero che qualcuno possa aiutarmi a risolvere.. e a capire.
    Così da non avere più problemi in futuro.

  2. #2
    ho provato a creare un form per l'inserimento da sito.

    il risultato è

    - su DB il campo viene visualizzato come "elettricitÃ"
    - sulla pagina di visualizzazione risulta "elettricità" (corretto)

    potrei a questo punto fare un aggiornamento dei campi così

    codice:
    $value = utf8_encode($row['servizio']);
    $query_upd = "UPDATE `tbl_serviziimmo` SET `servizio`= '".$value."' WHERE `idtbl_serviziimmo` = 1";
    MA... non capisco come mai venga visualizzato su db in quel modo però.... mentre nella tbl comuni.. si vede correttamente.
    magari son sbagliati i dati nella tbl comuni...?
    cioè non sono codificati in utf8.. anche se io li vedo correttamente in visualizzazione?...

    aspetto che qualcuno più capace di me.. possa spiegarmi.

  3. #3
    Il tuo problema e' difficile da risolvere da terze persone.

    C'e' in gioco il character set utilizzato. utf e' multibyte mentre l'ISO 8859 e' a singolo byte.

    Ovvio che se la codifica avviene sui primi 127 caratteri del codice ascii il risultato e' lo stesso, mentre per i caratteri del codice ISO 8859 superiori a 127 viene utilizzato l'ottavo bit del byte nel charset utf viene utilizzato un secondo byte od anche terzo byte.

    Quindi diventano reciprocamente illeggibili.

    Andando a ritroso a partire da mysql trovi un character set per la colonna, la tabella, il database, il server, la connessione al client, il client, apache, il browser.

    Praticamente tutti i CMS per memorizzare le stringhe sul db utilizzano htmlentities in modo da evitare le incongruenze del multibyte/iso 8859.

    Il problema e' classicamente posto nella connessione tra il client mysql (su php) ed il server mysql. Dovresti provare a settare il character set della connessione e vedere quale risultato ottieni.

    dopo la connessione esegui:

    mysql_query('set names utf8');

    oppure

    mysql_query('set names latin1');

    a seconda se devi passare da iso 8859 a utf8 o viceversa.

    forse puo' esserti utile dare una lettura a:

    http://it.wikipedia.org/wiki/ISO_8859
    http://it.wikipedia.org/wiki/UTF-8

    Per inciso tieni presente che se in campo varchar 255 latin1 ci stanno tutti questi caratteri in un campo identico ma utf-8 potrebbero starcene anche parecchi di meno. si parla di byte e non di simboli come avrai certamente capito.

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

  4. #4
    Originariamente inviato da piero.mac
    Il tuo problema e' difficile da risolvere da terze persone.
    be ma magari qualcuno saprebbe indicarmi se la "à" è codificata correttamente in UTF8 così "Ã"... o no...
    cioè... su db è tutto settato in utf8... sulla pagina di visualizzazione.. be direi pure come mostrato prima...

    vorrei esser sicuro che sia tutto a posto... per non ritrovarmi fra 1 mese.. con caratteri "?" che non so come sistemare...

  5. #5
    Originariamente inviato da Pandax
    be ma magari qualcuno saprebbe indicarmi se la "à" è codificata correttamente in UTF8 così "Ã"... o no...
    cioè... su db è tutto settato in utf8... sulla pagina di visualizzazione.. be direi pure come mostrato prima...

    vorrei esser sicuro che sia tutto a posto... per non ritrovarmi fra 1 mese.. con caratteri "?" che non so come sistemare...
    Se vuoi essere sicuro cambia tutte le lettere accentate nella corrispondente entita' html. Usa un editor con search/replace su un file di backup della tabella.

    Poi la ricarichi con un restore.

    altro link da leggere: http://fabrizio.zellini.org/codifica-dei-caratteri

    http://it.wikibooks.org/wiki/HTML/Entit%C3%A0

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

  6. #6
    Io continuo a ritenere l'utilizzo di htmlentities e simili.. assolutamente poco pratico...

    perde quasi il senso usare UTF-8...

    boh... intanto leggo... ma confido che qualcun'altro sappia darmi altre indicazioni in merito.

    grazie per l'aiuto intanto.

    PS il link di fabrizio.zellini.org/codifica-dei-caratteri non lo apre

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.