Una Griglia in solo Testo per contenuti in multilingua

Ciao a tutti,

volevo realizzare una semplice griglia e grazie a Gianni sono riuscito a creare ciň che desideravo. Ora trovo difficoltŕ nel realizzare una parte di script che corregge o migliora un problema della funzione che trovate sotto. Il problema riguarda la codifica dei caratteri unicode/utf-8.

In breve:

Ho un database MySql che registra i dati in italiano ed in altre lingue, soprattutto dell'europa dell'est. Ho notato che i caratteri non vengono stampati correttamente.

Quello che capita con le accentate della lingua italiana, non č un fenomeno isolato alla lingua italiana ma tutti i simboli degli alfabeti europei non sono correttamente stampati nel file di testo.

Sono a buon punto ma non riesco a capire come controllare i caratteri UTF8. Il database trasmette i dati in utf-8.

ecco cosa accade (guarda la parola "attivitŕ"):

                                 |                 
                         Pagella |                 
                                 |                 
                   Dati Studente |                 
                  Nome & Cognome | Alessio Del Duca 
                           Cittŕ | Roma
                           Stato | Italia           
                        Telefono | 06892424         
             Pagella dell'ultimo |           
                    quadrimestre |                 
                                 |                 
                        Italiano | 6,5                
                          Storia | 5,8                
                      Matematica | 7,4                
                                 |                 
             AttivitĂ Artistica |                 
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo 
                                 |                 
            AttivitĂ Agonistica |                 
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo  
                                 | Testo testo testo testo testo     

ecco il codice:

<?php
function texttable($dati)
{
   header("Content-type:text/plain");

   $max_lunghezza[0] = 25;
   $max_lunghezza[1] = 60;

   // per prima cosa mando "a capo" le stringhe lunghe
   for ($i=0, $n=count($dati) ; $i < $n ; $i++)
   {
      $dati[$i][0] = wordwrap($dati[$i][0],$max_lunghezza[0]);
      $dati[$i][1] = wordwrap($dati[$i][1],$max_lunghezza[1]);

      $campo = explode("\n",$dati[$i][0]);
      $valore = explode("\n",$dati[$i][1]);

      for ($j=0, $m=max(count($campo),count($valore)) ; $j < $m ; $j++)
      {
         $c = isset($campo[$j]) ? str_pad($campo[$j],$max_lunghezza[0],' ',STR_PAD_LEFT) : str_repeat(' ',$max_lunghezza[0]);
         $v = isset($valore[$j]) ? str_pad($valore[$j],$max_lunghezza[1],' ',STR_PAD_RIGHT) : '';
         echo "$c | $v\n";
      }
   }
}

texttable(array(
   array('Dati Studente',''),
   array('Nome & Cognome','Alessio Del Duca'),
   array('Cittŕ','Roma'),
   array('Stato','Italia'),
   array('',''),
   array('Dati dello studente del primo quadrimestre',''),
   array('Italiano','Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo '),
   array('Analisi di Matematica','Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo Testo ')
));
?>

Spero che qualcuno mi aiuti a risolvere questo grande problema, che per un novizio di php č insormontabile.  :o

A presto

Ulisse  :bye:

inviato 10 anni fa
ulisse
X 0 X

Che versione di MySQL stai usando?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ciao Gianni, la versione di MySql č la 5. Credi che ci sia qualche problema?!

 :bye:

risposto 10 anni fa
ulisse
X 0 X

Da PHP esegui queste query e riporta i risultati:

1) show variables like '%character%'

2) show create table nome_tabella

Dove nome_tabella č il nome della taballa dalla quale estrai i dati che mostrano il problema dei caratteri.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

1.

character_set_client    utf8

character_set_connection    utf8

character_set_database    utf8

character_set_results    utf8

character_set_server    latin1

character_set_system    utf8

character_sets_dir    C:\Programmi\MySQL\MySQL Server 5.0\share\charsets...

2.

CREATE TABLE `traduzioni` (

  `idtraduzioni` int(11) NOT NULL auto_increment,

  `placeholder` varchar(255) default NULL,

  `translation` longtext,

  PRIMARY KEY  (`idtraduzioni`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='InnoDB free: 6144 kB; InnoDB free: 5120 kB'

 :bye:

risposto 10 anni fa
ulisse
X 0 X

Visto che tutta la catena di montaggio usa l'utf8 allora il problema č nel software che visualizza i caratteri, che invece si aspetta il latin.  :dunno:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Sto MySql mi sta facendo impazzire :uglystupid:

        $charset = "utf8";

        mysql_query("SET NAME " . $charset);

        mysql_query("Set character_set_connection=" . $charset);

        mysql_query("Set character_set_results=" . $charset);

        mysql_query("Set character_set_client=" . $charset);

        mysql_query("Set character_set_server=" . $charset);

va bene cosě!?

 :bye:

risposto 10 anni fa
ulisse
modificato 10 anni fa
X 0 X

Ho impostato come sopra ma mi visualizza solamente dei punti interrogativi.  Che fare!? Ma esiste una impostazione semplice!?

bye

risposto 10 anni fa
ulisse
X 0 X

Ho utilizzato la funzione utf_decode ma il risultato sono i punti interrogativi

Ho recuperato il recordset ed inviandolo direttamente il risultato č:

ΠΡÎΣΩΠÎÎÎ

ΣΤÎÎΧÎÎÎ

 :o

 :bye:

risposto 10 anni fa
ulisse
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda