json_encode в PHP: разрастание данных
Эммм. В чем проблема, господа? Уверены в кодировке — вперед)

php -r 'var_dump(json_encode(«тест»));'
string(26) ""\u0442\u0435\u0441\u0442""

php -r 'var_dump(json_encode(«тест», JSON_UNESCAPED_UNICODE));'
string(10) "«тест»"
Использовать самопальный json::encode — там кода на 20 строк.
И даже кормить его cp1251 без конверта.
У таких решение только один минус — работают в сотни раз встроенного решения.