I database come MySQL hanno 2 opzioni relative alla codifica. Quando crei il database, le tabelle e i singoli campi testo (char, varchar, text, ecc.) puoi impostarle diversamente. Se non lo fai, basta che imposti queste due opzioni a livello di database e tutto quello che c'è sotto le eredita (le tabelle dal database e i campi testo dalle tabelle). Detto questo, UTF-8 esiste in MySQL. Le opzioni da considerare sono:
CHARACTER SET uft8
COLLATION utf8_general_ci (non esiste una collazione _cs, ovvero case sensitive)
Quindi, per creare un database in cui tutte le tabelle e tutti i campi testo usano UTF-8 devi scrivere:
CREATE DATABASE [nomedatabase] CHARACTER SET utf8 COLLATION utf8_general_ci;
Poi devi pensare alle pagine web che leggono le tabelle. Perché le pagine siano in UTF-8 (senza BOM mi raccomando!) devono avere entrambe queste caratteristiche:
1. Avere dichiarato il Content-Type (tramite meta tag) con charset=UTF-8.
2. Essere salvate con la codifica UTF-8. Questo lo puoi fare solo con un editor che supporta il salvataggio in codifiche differenti. Ad es., il Blocco note di Windows salva per default in ANSI, ma nella finestra Salva con nome puoi impostare la codifica a UTF-8.
Tieni anche conto che se insierisci i valori manualmente da riga di comando e provi a visualizzarli tramite pagine web, potresti avere comunque una rappresentazione errata (perché MySQL ha usato il Latin1 per la connessione). In questo caso, è utile approntare una pagina web in UTF-8 con un form per l'inserimento e la modifica dei dati. Inserendoli e modificandoli da questo form, i dati saranno letti e visualizzati sempre correttamente. In teoria, potresti comunque inserire i dati da linea di comando forzando la connessione ad usare UTF-8 al posto di Latin1 col comando SET NAMES. Tuttavia non te lo consiglio...almeno a me dava problemi quando tentavo di inserire stringhe con lettere accentate.