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

    Problema cinese e russo

    Ho una tabella del db mysql con dei testi in varie lingue, tra le quali il cinese e il russo. I dati li ho importati da un file csv e, con phpmyadmin vengono visualizzati correttamente. La collation della tabella è impostata a utf8 general-ci e così anche ogni campo della tabella. I campi che contengono i testi nelle varie lingue sono in formato varchar. Quando vado ad estrarre i dati dal database, per il russo e per il cinese vengono visualizzati solo dei punti di domanda. Ho anche altre tabelle dello stesso db con il russo e il cinese, ma in queste non ho riscontrato problemi estraendo i dati. Ho paragonato bene le cose che ho fatto con le varie tabelle e mi sembrano sempre le stesse. L'encoding delle pagine è uguale in tutte ed è uft-8. Cosa ho sbagliato?
    Creazione siti web e programmatore php freelance Reggio Emilia http://www.php-web.it

  2. #2
    controlla quale connessione viene utilizzata da mysql

    ciao
    danno

  3. #3
    E' sempre la stessa (mysql_connect) in tutte le classi, sia quelle che mi estraggono i testi corretti che quelle con i testi sbagliati.
    Creazione siti web e programmatore php freelance Reggio Emilia http://www.php-web.it

  4. #4
    Ho risolto
    Per chi avesse lo stesso problema fornisco la soluzione: il tutto è dovuto all'importazione di un file csv mediante PhpMyAdmin. Caricandolo così i caratteri risultano giusti in PhpMyAdmin, ma vengono mostrati sbagliati nelle pagine web. Ho ricaricato il csv da linea di comando e, nonostante in PhpMyAdmin i caratteri risultassero sbagliati, nel sito vengono giusti.
    Creazione siti web e programmatore php freelance Reggio Emilia http://www.php-web.it

  5. #5
    Guarda però che l'utf8_general_ci non è sufficiente per alcune lingue, o meglio, capita che siano supportate solo in parte, ed è facile che ti manchino dei caratteri: io per alcune lingue ho dovuto utilizzare utf8_unicode_ci.

    Se invece non si presenta il problema è meglio non utilizzarlo perché fa perdere un po' in prestazioni.

  6. #6
    Utente di HTML.it L'avatar di ZaK78
    Registrato dal
    Dec 2000
    Messaggi
    35
    Ciao,
    non so se hai realmente risolto o meno, hai spostato solo il problema forse...

    Le tue tabelle sono utf8_general-ci k
    I file csv dai quali importi i dati? che charset/encoding utilizzano???
    quale charset imposti per la visualizzazione con phpmyadmin???

    Il problema secondo me:

    quando hai importato i file con phpmyadmin molto probabilmente lui ha "indovinato" l'encoding o non so cosa e li ha caricati nelle tabelle in un determinato modo.
    Poi quando vai a leggerli li legge facilmente perchè l'algoritmo che ha utilizzato " di guessing dell'encoding" è sempre uguale, quindi è facile reindovinare l'encoding (che sarà uguale a prima).
    Quando li visualizzi "sul sito" (penso tu indenta attraverso un browser), è possibile che l'algoritmo di guessing dell'encoding del browser che stai utilizzando, interpreti i dati in maniera differente da quello di phpmyadmin, per quello li vedi male.

    Non e' detto che phpmyadmin li abbia caricati con il charset che hai specificato per il db, quella è la collation che indica che li dentro ci saranno dati con quel determinato charset, se poi tu inserisci dati "encodati" iso8859-1, iso8859-3 etc.. andranno a finire sempre nelle tabelle con i dovuti problemi che potranno sorgere in futuro.

    Caricandoli a mano potrebbe essere successa la stessa cosa, il problema è capire chi ha ragione :P

    Io solitamente apro (sotto linux) una shell settata in UTF-8 ( o con il charset che ho dichiarato per il db), poi vado a vedere direttamente sul db facendo delle select che dati mi restituisce.
    In questo modo sei sicuro di settare lato visualizzazione lo stesso charset che hai sul db.
    Potrebbe darsi che sul db hai i dati impostati in utf-8 e poi quando li visualizzi, il client, editor o browser che sia, lavori con altro charset ed è quello il motivo che te li fa vedere male.

    Il primo passo sta quindi nell'avere la certezza che sul db siano inseriti in modo corretto.
    Poi risolvi i problemi di visualizzazione.

    Spero di essermi spiegato bene, l'argomento è un pò delicato e sempre sottovalutato.

    Saluti
    Ros


    Nel tuo idem

  7. #7
    Grazie mille delle informazioni. Sembra che vada tutto correttamente, anche aggiungendo nuove voci dal pannello di amministrazione. Spero continui così
    Creazione siti web e programmatore php freelance Reggio Emilia http://www.php-web.it

  8. #8
    Sono felice che il tuo problema si sia risolto, so bene cosa vuol dire avere rogne coi set di carattere.
    Solo per tua informazione, ti linko la pagina del manuale dove spiega cosa intendevo con charset della connessione (mysql_connect e' una funzione di php e non centra molto)

    http://dev.mysql.com/doc/refman/5.0/...onnection.html


    ciao
    danno

  9. #9
    Grazie mille
    Creazione siti web e programmatore php freelance Reggio Emilia http://www.php-web.it

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.