Caratteri accentati e UTF 8 su HTML/PHP

Novembre 2016

Per visualizzare correttamente gli accenti sulle proprie pagine web, la sola soluzione è quella che consiste nell'utilizzare UTF8. Vediamo come.


Controllare la codifica dei file

I file (.php e .html) dei propri siti devono essere codificati in UTF8 (di preferenza senza BOM). Per fare questo, potrà utilizzare il proprio editor di testo preferito (o il proprio IDE).

Ad esempio: per Notepad++, entrare nel menu Formato, codifica in UTF-8 (senza Bom). Dreamweaver: Modifica, Proprietà della pagina, Titolo/codifica. Aptana: Modifica > Set Encoding. Notepad (Blocco Note Windows): File, Salva come nome, poi selezionare UTF-8 nella lista Codifica. PhpDesigner: entrare su File, Codifica del file, e poi selezionare UTF-8 dalla lista. PhpEdit: nella barra delle attività selezionare UTF-8 senza BOM nella lista. Infine, per UltraEdit, entrare in File, Conversioni, ASCII verso UTF-8.

Configurare la connessione al data base

In PDO, per esempio, si potrà specificare la codifica durante la connessione, aggiungendo il parametro charset:

try{
  $db =new PDO('mysql:host=localhost; 
 dbname=mydb; charset=utf8', 'user', 'password');
  $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
} catch(PDOException $e) {
    die('Error : ' . $e->getMessage());
}


Su MySQLi si utilizzeranno le istruzioni:

//Modo OOP (programmazione orientata agli oggetti)
$link->set_charset("utf8")

// Modo programmazione procedurale
mysqli_set_charset($link, "utf8")

$link rappresentando la connessione.

Come dichiarare la codifica nella propria pagina

Questa dichiarazione è fatta nell’header della pagina HTML, nel tag HEAD è possibile utilizzare, ad esempio:

meta http-equiv="Content-Type" content=\"text/html; charset=UTF-8\" 

o (in HTML5)
meta charset="UTF-8"


Mentre in PHP si potrà utilizzare l’istruzione:

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

Verificare che i propri data base siano in UTF8

Spesso in un database MySQL si utilizzerà la codifica utf8-general-ci o utf8_unicode_ci.

Nota Bene: se si sono già effettuate delle inserzioni nel data base, controllare che i caratteri accentuati appaiano correttamente nelle tabelle.

Utf8_encode / Utf8_decode

Non dimenticare di rimuovere tutte le istruzioni utf8_encode e utf8_decode se sono state utilizzate nei propri script.

Potrebbe anche interessarti :
Il documento intitolato « Caratteri accentati e UTF 8 su HTML/PHP » da CCM (it.ccm.net) è reso disponibile sotto i termini della licenza Creative Commons. È possibile copiare, modificare delle copie di questa pagina, nelle condizioni previste dalla licenza, finché questa nota appaia chiaramente.