httpwebwitch, that is strange. (And I take it that "偉大的產品 好價錢" is not correct. I'm completely clueless about eastern script.)
To my understanding, set_charset should be used every time a MySQL connection is opened, unless you're certain that the defaults (for client and server) are exactly as you need them already.
There's no chance that the data was inserted into the database over a connection that had another encoding, is there? Such that the database is storing a non-utf8 byte stream and issuing it under the banner of a UTF-8 encoding? The only way I can think of to check for this is to set_charset('utf8') and then store a new record in the database, then retrieve only that record and see whether everything is correct. If that does produce a correct retrieval, it would suggest that the data already in the database is in the wrong encoding. If instead you see the same problems, then I don't know what's going on.