PHP: codifica dei caratteri in Excel e XML

PHP: codifica dei caratteri in Excel e XML

Il formato dei documenti Excel è XML, quindi è conforme alle specifiche XML anche per quello che riguarda la codifica dei caratteri. Nelle specifiche si afferma che tutte le volte che un programma utente (Excel o un browser) rileva che un dato carattere non appartiene alla codifica specificata nel documento, deve sollevare un'eccezione e restituire un errore nel parsing XML. Questo ovviamente avviene anche per quei caratteri speciali che hanno un significato particolare in XML (come > o <) i quali devono essere convertiti in entità SGML. Vediamo come affrontare il problema.

I problemi di codifica si risolvono essenzialmente riducendo il sorgente del documento Excel o XML e il documento stesso ad un comune denominatore. In tal senso si raccomanda di utilizzare sempre la codifica UTF-8 per tali documenti. Ma cosa accade se il sorgente (file o database) ha una codifica diversa? In questo caso possiamo usare la seguente funzione descritta in questo articolo:


function fixEncoding($in_str)
{
  $cur_encoding = mb_detect_encoding($in_str);
  
  if($cur_encoding == "UTF-8" && mb_check_encoding($in_str,"UTF-8")) {
  
    return $in_str;
    
  } else {
    
    return utf8_encode($in_str);
    
  }
}

Verificate sempre la codifica del sorgente del documento Excel o XML che andrete a creare. Qualora non fosse possibile, usate la funzione citata sopra.

Torna su