If you're leaving the secure world of ASCII characters you're usually enter a dangerous land of confusion. It's actually a very complex topic and from a technical point of view there is no one to blame.
But if you don't care about the basics, don't care why or how, and just want a reliable and working system, simply follow these three advices to attain happiness and inner peace in your developer's life.
Advice 1
Define the character set for every column where you plan to store international character data:
CREATE TABLE t1 ( col1 VARCHAR(42) CHARACTER SET utf8 );
Or at least for every table:
CREATE TABLE t1 ( col1 VARCHAR(42) ) CHARACTER SET utf8;
The later example saves you some typing, but usually you don't need UTF-8 in every string column.
If you omit this parameter, MySQL assumes a default value which may be different from system to system.
Advice 2
…
[Read more]