Извините, не поделюсь. Было, но уже сплыло…
Можно как написали ниже заюзать самопальный парсер json, можно готовый json получить в win1251 (обратные слэши удалены, парсер жеж)
Использовать самопальный json::encode — там кода на 20 строк.
И даже кормить его cp1251 без конверта.
У таких решение только один минус — работают в сотни раз встроенного решения.
Такое кодирование нелатинских символов является, так сказать, единственным надёжным способом гарантированно точного представления таких символов вне зависимости от используемой на веб-странице кодировки. Но жаль, конечно, что в json_encode() нет параметра, позволяющего отключить такое кодирование, если кодировка страницы и JSON-данных заведомо совпадает.