Using six is probably better, because other developers know what six.u() does. Introducing custom compatibility hacks can confuse developers, and you risk getting it wrong.

Reinstating the `u'foo'` syntax in Python 3.3 has made it the first version worth targeting for me. Porting to earlier Python 3 versions was just a mess.