Base64 - это способ кодирования двоичных данных , в то время как UTF8 и UTF16 - это способы кодирования текста Unicode. Обратите внимание, что в таком языке, как Python 2.x, где двоичные данные и строки смешиваются, вы можете кодировать строки в base64 или utf8 таким же образом:
u'abc'.encode('utf16')
u'abc'.encode('base64')
Но в языках, где существует более четкое разделение между двумя типами данных, два способа представления данных обычно имеют довольно разные утилиты, чтобы разделить проблемы.