From a developer that regularly deals with character encoding woes.
The key is to make sure that the encoding is maintained through the entire chain. Your web server, your application and your database tables should all be set to UTF-8, if that is the encoding you want to use.
Otherwise, the text stream is changing encoding as it progress up and down the chain and you can end up with some very odd behavior. For example, if a user submits a utf-8 string to your application, which then interprets it as latin-1 (8859-1) which then places it into a database table that treats it like utf8 again. So what you end up with in your DB is a utf8 encoded version of the latin-1 encoding of the original utf8 string provided.
Very bizarre and very annoying to deal with. Single characters that end up taking 12 bytes is a tad wasteful
The moral of the story? Stay consistent with your encodings. Trying to change how string are interpreted can lead to potentially having to rebuild your db tables to match the new encoding (or just living with weird database content).
Good luck!