O usuário @Joni me levou à solução.
Adicionando
mysql_set_charset("utf8")
resolveu meu problema. Conforme mencionado neste post:Por que esta chamada PHP para json_encode está falhando silenciosamente - incapacidade de lidar com aspas simples? .
mysql_set_charset("utf8")
resolveu meu problema.