Originariamente inviato da skidx
Ovunque, più o meno, da wiki in poi.

Comunque, ti faccio uno schemino veloce:
- byte != carattere
Ogni carattere dentro il computer ha una certa rappresentazione in bit (come ogni informazione digitale). Lo stesso carattare, in diversi charset ( = set di caratteri) può avere rappresentazioni binarie differenti. Queste rappresentazioni possono occupare sempre un solo byte (come nell'ISO-8859-1) oppure più byte, come ad esempio in UTF-8.
- per agire bene deve esserci concordanza tra charset usato in memorizzazione e charset usato in visualizzazione....
e fin qui c'ero..

....Memorizzazione significa anche salvare i sorgenti con il giusto charset affinché le costanti stringa siano interpretate correttamente, non solo nel database.
Quindi se hai un file HTML in iso-8859-1, hai voglia a settare il browser in UTF-8, non basta quello per cambiare il suo charset, così come non basta dichiarare un metatag "utf-8" o un header HTTP analogo per rendere quel documento realmente in utf-8. Ci deve essere concordanza in tutti questi aspetti.
- quasi tutte le funzioni di manipolazione delle stringhe di PHP < 6 non funzionano su charset multibyte, (UTF-8 è multibyte), ma esistono librerie ed estensioni per risolvere questo problema.
- il collation riguarda l'ordinamento alfabetico delle stringhe. Ad esempio in Germania, dove vi sono più caratteri rispetto all'alfabeto latino standard, anche l'ordinamento alfabetico cambia di conseguenza. Quindi il collation da specificare in MySQL serve appunto ad ottenere un corretto ordinamento dei risultati testuali nelle query. In genere è molto semplice, perché c'è un collation di default per ogni charset. Quindi se usi UTF-8 come charset ti basta prendere il collation UTF-8 case insensitive e sei a posto.

Dubbi, perplessità?
eh.. è qui che mi incarto.. l'aspetto pratico del cosa settare dove quando e come..

fondamentalmente mi pare di capire che ci deve essere una concordanza di charset tra:
editor di testi (quindi file html etc)
charset dichiarato nel'html
database
connessioni al database

scordo qualcosa?

Detto questo: che charset usare?