borisz is right,
DBD::ODBC gives you the raw bytes, and doesn't turn on perl's internal utf8 flag. His answer is perfectly correct too, but in practice I've chosen to drop DBD::ODBC in favor of
DBD::ADO. It does a much better job of handling unicode text. I can't tell you why, but that's my experience.
But I should add that I needed this snippet at the top of my code to get full utf8 support:
# for ADO usage
use Win32::OLE;
Win32::OLE->Option( CP => Win32::OLE::CP_UTF8 );