DBD::ODBC has had increasing support for unicode since version 1.16. However, unicode seems to be an issue that causes a lot of confusion and especially when it comes to DBI and DBDs. The mantra of just DWIM, is complicated because most DBDs were originally written with no unicode support.
Until recently it has been difficult to insert unicode characters above 0xFFFF into MS SQL Server. DBD::ODBC could do it in such a way that you can select them back correctly but the built in functions (like length, sorting and upper/lower etc) did not treat the surrogate pairs as such so it was limited.
Microsoft SQL Server 2012 introduces a new collation suffix (_SC) and it supports surrogate pairs (although there is an indication that the UTF-16 encoded data must be sent little endian and I've not managed to test on a big endian machine as yet). Here is some test code: