Please read http://mysqldump.azundris.com/archives/60-Handling-character-sets.html
The short version: In MySQL string fields have a character set attached, and so have connections. The connection character set is the server-side representation of the client character set, it is what the server thinks the client is using.
The short way to set the connection character set is SET NAMES utf8, as mentioned in the comment above.
If the field character set is different from the connection character set, MySQL will try to convert the field to the connection character set. It will not try to do that if both are equal.
The way to debug that is, as shown in the article, to look at the field using the HEX() function, checking what the actual on-disk data is and if it is correct.
Then you connect to the database, having set your connection to the proper client character set with SET NAMES utf8, if you actually are working with utf8 as you claim. Then output the HEX() of the string again, it should be the same. If it is not, the connection does not have the right character set, for example, if you forgot to SET NAMES utf8.
You can configure the default connection character set in MySQL, using the definition of SET NAMES from the manual, http://dev.mysql.com/doc/refman/5.5/en/charset-connection.html
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
If you put this into the mysqld section of your my.cnf and restart the server, the SET NAMES should no longer be necessary, as the connection now by default will have utf8.