Под Python 3.x поведение оказывается неочевидным после этого изменения: функция не кодирует данные. Если она называется _encode, то и должна кодировать данные, хоть под 2.х, хоть под 3.х.

Кроме того, у json.dumps под 3.х нет метода encoding.