hay algo curioso ahí. si tu php debe devolver como respuesta un json, entonces no debe generar contenido html. de lo contrario, un script que espere como respuesta un json no sabría como interpretarlo porque el contenido no conforma la sintaxis javascript. por tanto, el elemento meta no debes utilizarlo en ese caso. para tu indicar desde php el tipo de contenido tienes que usar la función
header indicando el header http que quieres crear. en tu caso sería algo como header('Content-Type: application/json; charset=utf-8'). dicha función debes invocarla antes de generar cualquier salida.