What about always convert to string before to unicode?I agree. Regardless of the the parameter type, everything can be converted to string (and subsequently to unicode).
if not isinstance(value, unicode):
args[key] = unicode(str(value), 'utf-8')
That way we guarantee everything will be unicode in the end.