Sviluppando applicazioni prima o poi si arriverà a dover gestire caratteri particolari, come ad esempio lettere accentate o altri tipi di caratteri speciali, come caratteri cinesi, giapponesi, arabi ecc.
Prendendo in considerazione tutta una serie di accorgimenti è possibile risolvere una volta per tutte questo problema.
Questo articolo non vuole essere una spiegazione al character encoding o più nel dettaglio al charset UTF8, piuttosto una guida semplice e veloce alla risoluzione del problema.
Useremo il charset utf8_unicode_ci come encoding dei dati del nostro database, che chiameremo prova.
Impostazioni database
-
Creazione database: specifichiamo il charset utf8 nella creazione del database.
CREATE DATABASE prova CHARACTER SET utf8 COLLATE utf8_unicode_ci;
-
Creazione tabelle: specifichiamo il charset utf8 nella creazione delle tabelle.
CREATE TABLE tabella1 ( colonna1 CHAR(10) ) CHARACTER SET utf8 COLLATE utf8_unicode_ci; -
Creazione colonne: specifichiamo il charset utf8 nella creazione delle colonne.
ALTER TABLE `tabella1` ADD `name` CHAR( 32 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
Impostazioni applicazione
-
Query set names: query che setta il charset per il client ( character_set_client ), il result ( character_set_results ) e la connection ( character_set_connection ), da eseguire dopo la connessione al database:
set names utf8
-
Intestazioni HTML: dichiarare l’encoding nei meta del documento html:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Impostazioni editor
-
Verificare che nel proprio editor sia impostato l’encoding UTF8.


(3 votes, average: 3.67 out of 5)
per me ha funzionato, grazie!
Salve,
vorrei sapere come modificare il database esistente con il charset utf8
Grazie.
Ciao,
dovresti eseguire la seguente query per ogni tabella
“alter table {nome-tabella} convert to character set utf8 collate utf8_unicode_ci”
Se la query precedente creasse qualche problema con i dati pre-esistenti ti consiglio di ricreare un nuovo database (utf8) con la struttura delle sole tabelle (sempre utf8) quindi importare i soli dati tabella per tabella.
PRIMA di eseguire qualsiasi query creare un SEMPRE backup del db originale!
Ciao
Ciao vorrei sapere come fare la query “Query set names” perchè se scrivo così:
$connesso = mysql_connect(‘localhost’,'root’,”);
set_names utf8;
mysql_select_db(‘rapitech’) or die(mysql_error());
mi da errore
Ciao,
“set_names utf8″ è una query, quindi va eseguita.
Se usi le funzionalità ‘core’ mysql_, che comunque ti ricordo che sono deprecate,
utilizza mysql_query ( http://php.net/manual/en/function.mysql-query.php ).
Ciao
Grazie per l’aiuto!
Di nulla,
ciao!
Ciao a tutti.
Io ho un problema.
Ho una tabella creata con phpmyadmin che contiene dei dati tra cui lettere accentate.
poi ho caricato un file php sul mio sito che permette di vedere ciò che ho scritto nella tabella.
Che cosa devo inserire nel file php affinchè possa visualizzare correttamente le lettere accentate?
Grazie 1000
Pingback: Come creare un motore di ricerca con Sphinx e MySql | Sergio Rinaudo