http://www.perlmonks.org?node_id=216822


in reply to restore unicode data from database?

The man page for the "Encode" module in Perl 5.8.0 points out the following, under the heading "The UTF-8 flag", sub-heading "Messing with Perl's internals":
The following API uses parts of Perl's internals in the current implementation. As such, they are efficient but may change. ... _utf8_on(STRING) [INTERNAL] Turns on the UTF-8 flag in STRING. The data in STRING is not checked for being well-formed UTF-8. Do not use unless you know that the STRING is well-formed UTF-8. Returns the previous state of the UTF-8 flag (so please don't treat the return value as indicating success or failure), or "undef" if STRING is not a string.
I'm not saying that this is a good alternative to the work-around that you are already using. I have a hunch that anything else, that would actually treat the RDBM as a utf-8 source, would require mucking with the DBD or Tie:RDBM module internals, and would be problematic, since a database (and any interface to it) needs to be flexible about handling many types of non-ASCII data -- not just unicode characters.

Personally, I'd be content with the method you are already using.